Merge branch 'maint'

This commit is contained in:
John Ralls
2016-09-17 16:59:46 -07:00
77 changed files with 193679 additions and 223334 deletions

View File

@@ -56,6 +56,7 @@ OPTION (WITH_AQBANKING "Build this project with aqbanking (online banking) suppo
OPTION (WITH_GNUCASH "Build all of GnuCash, not just cutecash" ON) OPTION (WITH_GNUCASH "Build all of GnuCash, not just cutecash" ON)
OPTION (WITH_CUTECASH "Also build cutecash" OFF) OPTION (WITH_CUTECASH "Also build cutecash" OFF)
OPTION (WITH_OFX "compile with ofx support (needs LibOFX)" ON) OPTION (WITH_OFX "compile with ofx support (needs LibOFX)" ON)
OPTION (WITH_PYTHON "enable python plugin and bindings" OFF)
OPTION (ENABLE_BINRELOC "compile with binary relocation support" ON) OPTION (ENABLE_BINRELOC "compile with binary relocation support" ON)
OPTION (ENABLE_DEBUG "compile with debugging flags set" OFF) OPTION (ENABLE_DEBUG "compile with debugging flags set" OFF)
OPTION (ENABLE_REGISTER2 "compile with register2 enabled" OFF) OPTION (ENABLE_REGISTER2 "compile with register2 enabled" OFF)
@@ -100,6 +101,19 @@ IF (SHELL_FROM_ENV) # Replacing this with IF ($ENV{SHELL}) doesn't work.
SET(SHELL ${SHELL_FROM_ENV}) SET(SHELL ${SHELL_FROM_ENV})
ENDIF() ENDIF()
# Determine whether we are building from a VCS or from a tarball
EXECUTE_PROCESS(
COMMAND ${SHELL} ${CMAKE_SOURCE_DIR}/util/gnc-vcs-info -t ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE GNC_VCS_INFO_RESULT
OUTPUT_VARIABLE GNC_VCS_INFO_OUTPUT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
SET(BUILDING_FROM_VCS "NO")
IF (GNC_VCS_INFO_RESULT EQUAL 0)
SET(BUILDING_FROM_VCS "YES")
ENDIF()
IF (WIN32) IF (WIN32)
# Help Windows find the various dependencies. We assume here that the standard advice for building # Help Windows find the various dependencies. We assume here that the standard advice for building
# GnuCash has been followed and that these dependencies live underneath something like C:/GCDEV, which # GnuCash has been followed and that these dependencies live underneath something like C:/GCDEV, which
@@ -124,6 +138,8 @@ IF (WIN32)
SET(LIBXSLT_XSLTPROC_EXECUTABLE ${CMAKE_PREFIX_PATH}/libxslt/bin/xsltproc) SET(LIBXSLT_XSLTPROC_EXECUTABLE ${CMAKE_PREFIX_PATH}/libxslt/bin/xsltproc)
# I have not yet debugged the intltool-merge file generation process on Windows. # I have not yet debugged the intltool-merge file generation process on Windows.
SET(NO_INTLTOOL TRUE) SET(NO_INTLTOOL TRUE)
#Prevent creating a console window on startup.
SET(CMAKE_EXE_LINKER_FLAGS -mwindows)
ENDIF(WIN32) ENDIF(WIN32)
IF (APPLE) IF (APPLE)
@@ -213,8 +229,10 @@ ENDIF (WIN32)
# ############################################################ # ############################################################
# SWIG # SWIG
FIND_PACKAGE (SWIG REQUIRED) IF(BUILDING_FROM_VCS)
INCLUDE (${SWIG_USE_FILE}) FIND_PACKAGE (SWIG REQUIRED)
INCLUDE (${SWIG_USE_FILE})
ENDIF()
# Find Guile and determine which version we are using. # Find Guile and determine which version we are using.
# First look for guile-2.0. If not found, try to locate guile-1.8 # First look for guile-2.0. If not found, try to locate guile-1.8
@@ -273,6 +291,31 @@ ENDIF (WITH_AQBANKING)
IF (WITH_OFX) IF (WITH_OFX)
GNC_PKG_CHECK_MODULES (LIBOFX REQUIRED libofx) GNC_PKG_CHECK_MODULES (LIBOFX REQUIRED libofx)
INCLUDE(CheckCXXSourceRuns)
SET(CMAKE_REQUIRED_LIBRARIES "-lofx")
CHECK_CXX_SOURCE_RUNS("
#include <time.h>
#include <stdlib.h>
#include <string>
extern time_t ofxdate_to_time_t(const std::string ofxdate);
int main(int argc, char** argv)
{
const std::string timestr = \"20160319000000\";
struct tm ts;
ts.tm_year = 116;
ts.tm_mon = 2;
ts.tm_mday = 19;
setenv(\"TZ\", \"PST 08 PDT 07 M 4.1.0, M 10.6.0\", 1);
time_t t = ofxdate_to_time_t(timestr);
if (t == mktime(&ts))
exit(1);
exit(0);
}
" HAVE_OFX_BUG_39)
SET(HAVE_OFX_BUG_39 ${HAVE_OFX_BUG_39})
SET(CMAKE_REQUIRED_LIBRARIES)
ENDIF(WITH_OFX) ENDIF(WITH_OFX)
# ############################################################ # ############################################################
@@ -323,6 +366,24 @@ ENDIF (WITH_SQL)
# ############################################################ # ############################################################
IF (WITH_PYTHON)
FIND_PACKAGE(PythonInterp)
IF (NOT PYTHONINTERP_FOUND)
MESSAGE(SEND_ERROR "Python support enabled, but Python interpreter not found.")
ENDIF()
IF (PYTHON_VERSION_STRING VERSION_LESS "2.4.0")
MESSAGE(SEND_ERROR "Found python version ${PYTHON_VERSION_STRING}, but it's too old. Need python >= 2.4.0")
ENDIF()
FIND_PACKAGE(PythonLibs)
IF (NOT PYTHONLIBS_FOUND)
MESSAGE(SEND_ERROR "Python support enabled, but Python libraries not found.")
ENDIF()
ENDIF()
FIND_PACKAGE(Perl) FIND_PACKAGE(Perl)
if (NOT PERL_FOUND) if (NOT PERL_FOUND)
@@ -446,6 +507,7 @@ ENDIF()
ADD_SUBDIRECTORY (accounts) ADD_SUBDIRECTORY (accounts)
ADD_SUBDIRECTORY (checks) ADD_SUBDIRECTORY (checks)
ADD_SUBDIRECTORY (doc) ADD_SUBDIRECTORY (doc)
ADD_SUBDIRECTORY (packaging)
ADD_SUBDIRECTORY (po) ADD_SUBDIRECTORY (po)
ADD_SUBDIRECTORY (src) ADD_SUBDIRECTORY (src)

222
ChangeLog
View File

@@ -1,6 +1,226 @@
2016-09-16 John Ralls
* Synchronize translation project. (HEAD, maint)
2016-09-15 John Ralls
* Bug 769746 - Zero interest loan formula fails. (origin/maint)
2016-08-01 Robert Fewell
* Add option to recn cell type to be read only
2016-08-01 Robert Fewell
* Make a distinction between file/link Association
2016-08-01 Robert Fewell
* Indicate an Association in the Register
2016-09-13 John Ralls
* Bug 771379 - GnuCash doesn't support Russian Ruble Symbol
2016-09-12 Mike Evans
* Bug 771246 - Set Invoice/Bill items date correctly from imported CSV.
2016-09-11 John Ralls
* Bug 770181 - gnc-fq-dump incorrectly says "quote cannot be used...
2016-09-11 John Ralls
* Bug 761667 - Crash opening associated location that has no scheme
2016-09-11 John Ralls
* Australian (GMT-10) OFX transactions imported have previous days date
2016-09-08 Geert Janssens
* Bug 643025 - RFE: Ability to select and open multiple invoices
2016-09-07 Geert Janssens
* Bug 733153 - Ambiguous view of buttons in search dialog Linux version
2016-09-07 Geert Janssens
* Add small note the split action field is pre-filled by the business features
2016-08-03 Robert Fewell
* Bug 762901 [PATCH] Fix saving Account Treeview sort order.
2016-09-02 Serge Gebhardt
* Value "price" allowed in attr cd:type for element book (RELAX NG file)
2016-09-01 John Ralls
* Bug 769730 - Investments: Lots in This Account, Closed column shows
2016-08-26 Rob Gowin
* CMake improvements for SWIG handling and Python bindings.
2016-08-25 Geoff Lee
* Bug 770303 - Incorrect commodity match during import OFX and possible solution.
2016-08-25 John Ralls
* Whitespace cleanup in gnc_import_select_commodity.
2016-08-24 Geert Janssens
* SX - recalculate all occurrences of all SX if the calendar is updated to start on another month
2016-08-24 Geert Janssens
* SX Window: correctly show first sx on calendar when it is moved to next weekday
2016-08-24 Geert Janssens
* Bug 770136 - 'Reverse Order' in 'View'->'Sort by' is not saved
2016-08-22 John Ralls
* Bug 742461 - SQL backend doesn't update customer info
2016-08-22 Pierre-André Jacquod
* Bug 770196 - cppcheck va_list not closed
2016-08-21 John Ralls
* Revert "temporarily disable pre-logging messages."
2016-08-20 John Ralls
* Suppress the console window on launch when building with CMake on MSWin.
2016-08-20 John Ralls
* Merge branch 'maint' of ssh://code.gnucash.org/gnucash into maint
2016-08-19 John Ralls
* Bug 770113 - compiling issue with libdbi.
2016-08-19 John Ralls
* Fix compilation error in sqlite3_error_fn.
2016-08-18 John Ralls
* temporarily disable pre-logging messages.
2016-08-08 Stefan Talpalaru
* remove duplicate line
2016-08-08 Stefan Talpalaru
* fix compilation with guile-2.0.12
2016-04-28 fell
* Minor improvement of singe quote sources SIX*
2016-08-01 John Ralls
* Attempt to fix Travis test failure.
2016-07-31 fell
* de.po: merge new template
2016-07-31 fell
* Fix a typo in dialog invoice
2016-07-31 fell
* de.po: review of commit d5fa61d
2016-07-31 fell
* minor fix of de.po
2016-07-16 Marco Zietzling
* fixed some more German translations
2016-07-16 Marco Zietzling
* fixed some more German translations
2016-07-16 Marco Zietzling
* fixed some more German translations
2016-07-16 Marco Zietzling
* fixed German translations
2016-07-16 Rob Gowin
* Fixes to get CMake "MinGW Makefiles" generator to work. (github/maint)
2016-07-14 Rob Gowin
* Allow HTMLHELP_DIR to be specified on cmake command line
2016-07-12 Mike Evans
* Bug 756416 - CSV data with Posted information will always have last invoice not posted.
2016-07-08 John Ralls
* Tweak version.cmake to work on Windows.
2016-07-05 John Ralls
* Make CMake use the same scm-revision program as Autotools.
2016-07-03 John Ralls
* Clear the GDate before use.
2016-07-02 John Ralls
* Bug 137017 - date of transaction change with time zone change
2016-07-02 John Ralls
* Don't override optimization flags in CMakeLists.txt.
2016-07-02 Geert Janssens
* When default tax table is 'None', set a new invoice/bill entry as not taxabl by default as well.
2016-06-28 John Ralls
* Fix incomplete function name from 74fa556. (tag: 2.6.13b)
2016-06-27 John Ralls
* Reset release date to 28 June. (tag: 2.6.13a)
2016-06-27 John Ralls
* containsString wasn't introduced until OS X 10.10.
2016-06-25 John Ralls
* Release 2.6.13 (tag: 2.6.13)
2016-06-24 John Ralls 2016-06-24 John Ralls
* Update translations from the translation project. (HEAD, origin/maint, maint) * Update translations from the translation project.
2016-06-23 John Ralls 2016-06-23 John Ralls

44
NEWS
View File

@@ -1,5 +1,49 @@
Version history: Version history:
------- ------- ------- -------
2.6.14 - 17 September 2016
Announcement: GnuCash 2.6.14 Release 2016-09-17
GnuCash 2.6.14 released
The GnuCash development team proudly announces GnuCash 2.6.14, the
fourteenth maintenance release in the 2.6-stable series.
The following bugs are fixed:
Bug 643025 - RFE: Ability to select and open multiple invoices.
Bug 733153 - Ambiguous view of buttons in search dialog Linux version.
Bug 742461 - SQL backend doesn't update customer info.
Bug 756416 - CSV data with Posted information will always have last
invoice not posted.
Bug 761667 - Crash opening associated location that has no scheme.
Bug 762901 - Fix saving Account Treeview sort order.
Bug 769730 - Investments: Lots in This Account, Closed column shows
date 25/11/1833 instead of Open.
Bug 769746 - Zero interest loan formula fails.
Bug 770113 - compiling issue with libdbi.
Bug 770136 - 'Reverse Order' in 'View'->'Sort by' is not saved.
Bug 770181 - gnc-fq-dump incorrectly says "quote cannot be used...
Bug 770196 - cppcheck va_list not closed.
Bug 770303 - Incorrect commodity match during import OFX and possible
solution.
Bug 771246 - Set Invoice/Bill items date correctly from imported CSV.
Bug 771379 - GnuCash doesn't support Russian Ruble Symbol.
Other repairs that weren't marked as bugs in git:
Build improvements with CMake, accomodation for Guile-2.0.12 on Gentoo.
Change the date_posted timestamp from midnight local to 11:00 AM GMT,
which will be the same date in nearly all timezones.
SX - Recalculate all occurrences of all SX if the calendar is updated
to start on another month
SX Window: correctly show first sx on calendar when it is moved to next
weekday.
Work around libofx bug which caused OFX imports to have the wrong
date_posted when in an eastern-hemisphere timezone and not
daylight time.
Indicate in the register when a transaction has an associated file or
URI. The indicator will appear in the "reconciled" column in the
second transaction line (enable double-line view to see it).
Translation Updates: Dutch, German, Serbian, Spanish
2.6.13 - 28 June 2016 2.6.13 - 28 June 2016
Announcement: GnuCash 2.6.13 Release 2016-06-28 Announcement: GnuCash 2.6.13 Release 2016-06-28
GnuCash 2.6.13 released GnuCash 2.6.13 released

View File

@@ -1064,6 +1064,41 @@ if test x${have_ofx} = xyes ; then
MIGRATABLE_PREFS_OFX="$srcdir/src/import-export/ofx/migratable-prefs-ofx.xml" MIGRATABLE_PREFS_OFX="$srcdir/src/import-export/ofx/migratable-prefs-ofx.xml"
fi fi
ofx_has_bug_39=no
if test x${have_ofx} = xyes ; then
AC_MSG_CHECKING([Does libofx have bug 39])
libs_old="$LIBS"
LIBS="$LIBS -lofx"
AC_LANG_PUSH(C++)
AC_RUN_IFELSE(
[AC_LANG_PROGRAM([
#include <time.h>
#include <stdlib.h>
#include <string>
extern time_t ofxdate_to_time_t(const std::string ofxdate);
],[
const std::string timestr = "20160319000000";
struct tm ts;
ts.tm_year = 116;
ts.tm_mon = 2;
ts.tm_mday = 19;
setenv("TZ", "PST 08 PDT 07 M 4.1.0, M 10.6.0", 1);
time_t t = ofxdate_to_time_t(timestr);
if (t == mktime(&ts))
exit(0);
exit(1);
])],
[AC_MSG_RESULT(no)], [
AC_MSG_RESULT(yes)
ofx_has_bug_39=yes
])
if test x$ofx_has_bug_39 = "xyes"; then
AC_DEFINE(HAVE_OFX_BUG_39, 1, [Libofx has a daylight-time handling bug.])
fi
AC_LANG_POP([C++])
LIBS="$libs_old"
fi
AM_CONDITIONAL([WITH_OFX], [test "x${have_ofx}" = xyes]) AM_CONDITIONAL([WITH_OFX], [test "x${have_ofx}" = xyes])
AC_SUBST_FILE([MIGRATABLE_PREFS_OFX]) AC_SUBST_FILE([MIGRATABLE_PREFS_OFX])
### -------------------------------------------------------------------------- ### --------------------------------------------------------------------------

2
packaging/CMakeLists.txt Normal file
View File

@@ -0,0 +1,2 @@
GNC_CONFIGURE(gnucash.spec.in gnucash.spec)

View File

@@ -4,11 +4,6 @@
# #
# Translators: # Translators:
# Aziz2013 <Abdulaziz_ahmed2001@hotmail.com>, 2013 # Aziz2013 <Abdulaziz_ahmed2001@hotmail.com>, 2013
# ashalash <ashalash@msn.com>, 2013
# ashalash1409 <ashalash1409@hotmail.com>, 2013
# ashalash1409 <ashalash1409@hotmail.com>, 2013
# ashalash <ashalash@msn.com>, 2013
# Aziz2013 <Abdulaziz_ahmed2001@hotmail.com>, 2013
# khadiramd <khadird@yahoo.com>, 2013 # khadiramd <khadird@yahoo.com>, 2013
# ashalash <ashalash@msn.com>, 2013 # ashalash <ashalash@msn.com>, 2013
msgid "" msgid ""
@@ -18,9 +13,9 @@ msgstr ""
"POT-Creation-Date: 2015-10-05 12:57-0700\n" "POT-Creation-Date: 2015-10-05 12:57-0700\n"
"PO-Revision-Date: 2015-10-23 10:00+0300\n" "PO-Revision-Date: 2015-10-23 10:00+0300\n"
"Last-Translator: Abdulsalam ALshilash <ashalash@msn.com>\n" "Last-Translator: Abdulsalam ALshilash <ashalash@msn.com>\n"
"Language-Team: Arabic (http://www.transifex.com/projects/p/gnucash-2410/language/ar/)\n" "Language-Team: \n"
"<ashalash@msn.com>\n"
"Language: ar\n" "Language: ar\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"

35318
po/az.po

File diff suppressed because it is too large Load Diff

11860
po/ca.po

File diff suppressed because it is too large Load Diff

39692
po/cs.po

File diff suppressed because it is too large Load Diff

11842
po/da.po

File diff suppressed because it is too large Load Diff

9922
po/es.po

File diff suppressed because it is too large Load Diff

40405
po/eu.po

File diff suppressed because it is too large Load Diff

33769
po/fa.po

File diff suppressed because it is too large Load Diff

24189
po/ja.po

File diff suppressed because it is too large Load Diff

11885
po/nl.po

File diff suppressed because it is too large Load Diff

38741
po/rw.po

File diff suppressed because it is too large Load Diff

41635
po/sk.po

File diff suppressed because it is too large Load Diff

11887
po/sr.po

File diff suppressed because it is too large Load Diff

View File

@@ -18,6 +18,7 @@ msgstr ""
"Last-Translator: Erik Johansson <erik@ejohansson.se>\n" "Last-Translator: Erik Johansson <erik@ejohansson.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n" "Language: sv\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"

23726
po/tr.po

File diff suppressed because it is too large Load Diff

38650
po/uk.po

File diff suppressed because it is too large Load Diff

42305
po/zh_CN.po

File diff suppressed because it is too large Load Diff

View File

@@ -171,13 +171,18 @@ IF (WITH_GNUCASH)
ADD_SUBDIRECTORY (bin) ADD_SUBDIRECTORY (bin)
ADD_SUBDIRECTORY (business/business-ledger) ADD_SUBDIRECTORY (business/business-ledger)
ADD_SUBDIRECTORY (business/business-gnome) ADD_SUBDIRECTORY (business/business-gnome)
ADD_SUBDIRECTORY (doc/design)
ADD_SUBDIRECTORY (gnome) ADD_SUBDIRECTORY (gnome)
ADD_SUBDIRECTORY (gnome-utils) ADD_SUBDIRECTORY (gnome-utils)
ADD_SUBDIRECTORY (gnome-search) ADD_SUBDIRECTORY (gnome-search)
ADD_SUBDIRECTORY (html) ADD_SUBDIRECTORY (html)
ADD_SUBDIRECTORY (optional/python-bindings)
ADD_SUBDIRECTORY (plugins/bi_import) ADD_SUBDIRECTORY (plugins/bi_import)
ADD_SUBDIRECTORY (plugins/customer_import) ADD_SUBDIRECTORY (plugins/customer_import)
ADD_SUBDIRECTORY (pixmaps) ADD_SUBDIRECTORY (pixmaps)
IF (WITH_PYTHON)
ADD_SUBDIRECTORY (python)
ENDIF()
ADD_SUBDIRECTORY (quotes) ADD_SUBDIRECTORY (quotes)
ADD_SUBDIRECTORY (register/ledger-core) ADD_SUBDIRECTORY (register/ledger-core)
ADD_SUBDIRECTORY (register/register-core) ADD_SUBDIRECTORY (register/register-core)

View File

@@ -36,9 +36,16 @@ SET (app_utils_HEADERS
) )
# Command to generate the swig-app-utils.c wrapper file IF (BUILDING_FROM_VCS)
SET (SWIG_APP_UTILS_C ${CMAKE_CURRENT_BINARY_DIR}/swig-app-utils.c) # Command to generate the swig-app-utils.c wrapper file
GNC_ADD_SWIG_COMMAND (${SWIG_APP_UTILS_C} ${CMAKE_CURRENT_SOURCE_DIR}/app-utils.i) SET (SWIG_APP_UTILS_GUILE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-app-utils-guile.c)
GNC_ADD_SWIG_COMMAND (${SWIG_APP_UTILS_GUILE_C} ${CMAKE_CURRENT_SOURCE_DIR}/app-utils.i)
SET (SWIG_APP_UTILS_PYTHON_C ${CMAKE_CURRENT_BINARY_DIR}/swig-app-utils-python.c)
GNC_ADD_SWIG_PYTHON_COMMAND (swig-app-utils-python ${SWIG_APP_UTILS_PYTHON_C} ${CMAKE_CURRENT_SOURCE_DIR}/app-utils.i)
ELSE()
SET (SWIG_APP_UTILS_GUILE_C swig-app-utils-guile.c)
SET (SWIG_APP_UTILS_PYTHON_C swig-app-utils-python.c)
ENDIF()
SET (app_utils_SOURCES SET (app_utils_SOURCES
calculation/expression_parser.c calculation/expression_parser.c
@@ -66,47 +73,57 @@ SET (app_utils_SOURCES
gncmod-app-utils.c gncmod-app-utils.c
guile-util.c guile-util.c
option-util.c option-util.c
${SWIG_APP_UTILS_C} ${SWIG_APP_UTILS_GUILE_C}
) )
IF (WIN32)
SET (app_utils_SOURCES ${app_utils_SOURCES} gnc-help-utils.c)
ENDIF (WIN32)
SET_SOURCE_FILES_PROPERTIES (${app_utils_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H}) SET_SOURCE_FILES_PROPERTIES (${app_utils_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
ADD_LIBRARY (gncmod-app-utils SET(app_utils_ALL_SOURCES ${app_utils_SOURCES} ${app_utils_HEADERS} ${app_utils_noinst_HEADERS})
${app_utils_SOURCES} SET(app_utils_ALL_LIBRARIES gncmod-engine gnc-module ${GTK2_LDFLAGS} ${LIBXML2_LDFLAGS} ${LIBXSLT_LDFLAGS})
${app_utils_HEADERS} SET(app_utils_ALL_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/calculation ${LIBXML2_INCLUDE_DIRS}
${app_utils_noinst_HEADERS} ${LIBXSLT_INCLUDE_DIRS} ${GTK2_INCLUDE_DIRS})
)
TARGET_LINK_LIBRARIES(gncmod-app-utils gncmod-engine gnc-module IF (WIN32)
${GTK2_LDFLAGS} ${LIBXML2_LDFLAGS} ${LIBXSLT_LDFLAGS} LIST(APPEND app_utils_ALL_SOURCES gnc-help-utils.c)
) LIST(APPEND app_utils_ALL_LIBRARIES ${HTMLHELP_LIBRARY})
LIST(APPEND app_utils_ALL_INCLUDES ${HTMLHELP_INCLUDE_PATH})
ENDIF()
IF (WIN32) ADD_LIBRARY (gncmod-app-utils ${app_utils_ALL_SOURCES})
TARGET_LINK_LIBRARIES(gncmod-app-utils ${HTMLHELP_LIBRARY}) TARGET_LINK_LIBRARIES(gncmod-app-utils ${app_utils_ALL_LIBRARIES})
ENDIF(WIN32)
TARGET_INCLUDE_DIRECTORIES (gncmod-app-utils TARGET_INCLUDE_DIRECTORIES (gncmod-app-utils
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE PRIVATE ${app_utils_ALL_INCLUDES}
${CMAKE_CURRENT_SOURCE_DIR}/calculation
${LIBXML2_INCLUDE_DIRS}
${LIBXSLT_INCLUDE_DIRS}
${HTMLHELP_INCLUDE_PATH}
${GTK2_INCLUDE_DIRS}
) )
TARGET_COMPILE_DEFINITIONS (gncmod-app-utils PRIVATE -DG_LOG_DOMAIN=\"gnc.app-utils\") TARGET_COMPILE_DEFINITIONS (gncmod-app-utils PRIVATE -DG_LOG_DOMAIN=\"gnc.app-utils\")
INSTALL(TARGETS gncmod-app-utils INSTALL(TARGETS gncmod-app-utils
LIBRARY DESTINATION lib/gnucash LIBRARY DESTINATION lib/gnucash
ARCHIVE DESTINATION lib/gnucash ARCHIVE DESTINATION lib/gnucash
RUNTIME DESTINATION bin RUNTIME DESTINATION bin
) )
IF (WITH_PYTHON)
ADD_LIBRARY (gncmod-app-utils-python ${app_utils_ALL_SOURCES} ${SWIG_APP_UTILS_PYTHON_C})
TARGET_LINK_LIBRARIES(gncmod-app-utils-python ${app_utils_ALL_LIBRARIES} ${PYTHON_LIBRARIES})
TARGET_INCLUDE_DIRECTORIES (gncmod-app-utils-python
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${app_utils_ALL_INCLUDES} ${PYTHON_INCLUDE_DIRS}
)
TARGET_COMPILE_DEFINITIONS (gncmod-app-utils-python PRIVATE -DG_LOG_DOMAIN=\"gnc.app-utils\")
INSTALL(TARGETS gncmod-app-utils-python
LIBRARY DESTINATION lib/gnucash
ARCHIVE DESTINATION lib/gnucash
RUNTIME DESTINATION bin
)
ENDIF()
INSTALL(FILES ${app_utils_HEADERS} DESTINATION include/gnucash) INSTALL(FILES ${app_utils_HEADERS} DESTINATION include/gnucash)
FILE(READ ${CMAKE_SOURCE_DIR}/src/import-export/ofx/migratable-prefs-ofx.xml MIGRATABLE_PREFS_OFX) FILE(READ ${CMAKE_SOURCE_DIR}/src/import-export/ofx/migratable-prefs-ofx.xml MIGRATABLE_PREFS_OFX)

View File

@@ -137,9 +137,11 @@ struct QofPGSQLBackendProvider : public QofBackendProvider
#if LIBDBI_VERSION >= 900 #if LIBDBI_VERSION >= 900
#define HAVE_LIBDBI_R 1 #define HAVE_LIBDBI_R 1
#define HAVE_LIBDBI_TO_LONGLONG 1
static dbi_inst dbi_instance = NULL; static dbi_inst dbi_instance = NULL;
#else #else
#define HAVE_LIBDBI_R 0 #define HAVE_LIBDBI_R 0
#define HAVE_LIBDBI_TO_LONGLONG 0
#endif #endif
#define GNC_HOST_NAME_MAX 255 #define GNC_HOST_NAME_MAX 255
@@ -2236,6 +2238,13 @@ row_get_value_at_col_name (GncSqlRow* row, const gchar* col_name)
} }
else else
{ {
#if HAVE_LIBDBI_TO_LONGLONG
/* A less evil hack than the one equrie by libdbi-0.8, but
* still necessary to work around the same bug.
*/
time64 time = dbi_result_get_as_longlong(dbi_row->result,
col_name);
#else
/* A seriously evil hack to work around libdbi bug #15 /* A seriously evil hack to work around libdbi bug #15
* https://sourceforge.net/p/libdbi/bugs/15/. When libdbi * https://sourceforge.net/p/libdbi/bugs/15/. When libdbi
* v0.9 is widely available this can be replaced with * v0.9 is widely available this can be replaced with
@@ -2245,6 +2254,7 @@ row_get_value_at_col_name (GncSqlRow* row, const gchar* col_name)
guint64 row = dbi_result_get_currow (result); guint64 row = dbi_result_get_currow (result);
guint idx = dbi_result_get_field_idx (result, col_name) - 1; guint idx = dbi_result_get_field_idx (result, col_name) - 1;
time64 time = result->rows[row]->field_values[idx].d_datetime; time64 time = result->rows[row]->field_values[idx].d_datetime;
#endif //HAVE_LIBDBI_TO_LONGLONG
(void)g_value_init (value, G_TYPE_INT64); (void)g_value_init (value, G_TYPE_INT64);
g_value_set_int64 (value, time); g_value_set_int64 (value, time);
} }

View File

@@ -84,7 +84,7 @@ load_address (const GncSqlBackend* be, GncSqlRow* row,
g_return_if_fail (pObject != NULL); g_return_if_fail (pObject != NULL);
g_return_if_fail (table_row != NULL); g_return_if_fail (table_row != NULL);
addr = gncAddressCreate (be->book, NULL); addr = gncAddressCreate (be->book, QOF_INSTANCE(pObject));
for (subtable = col_table; subtable->col_name != NULL; subtable++) for (subtable = col_table; subtable->col_name != NULL; subtable++)
{ {
buf = g_strdup_printf ("%s_%s", table_row->col_name, subtable->col_name); buf = g_strdup_printf ("%s_%s", table_row->col_name, subtable->col_name);

View File

@@ -168,14 +168,14 @@ sixtp_set_any (sixtp* tochange, int cleanup, ...)
va_list ap; va_list ap;
sixtp_handler_type type; sixtp_handler_type type;
va_start (ap, cleanup);
if (!tochange) if (!tochange)
{ {
g_warning ("Null tochange passed"); g_warning ("Null tochange passed");
return NULL; return NULL;
} }
va_start (ap, cleanup);
do do
{ {
type = static_cast<decltype (type)> (va_arg (ap, int)); type = static_cast<decltype (type)> (va_arg (ap, int));

View File

@@ -2800,12 +2800,17 @@ edit_invoice_direct (gpointer invoice, gpointer user_data)
} }
static void static void
edit_invoice_cb (gpointer *invoice_p, gpointer user_data) edit_invoice_cb (gpointer inv, gpointer user_data)
{ {
g_return_if_fail (invoice_p && user_data); GncInvoice *invoice = inv;
if (! *invoice_p) g_return_if_fail (invoice && user_data);
return; edit_invoice_direct (invoice, user_data);
edit_invoice_direct (*invoice_p, user_data); }
static void
multi_edit_invoice_cb (GList *invoice_list, gpointer user_data)
{
g_list_foreach(invoice_list, edit_invoice_cb, user_data);
} }
static void static void
@@ -2999,7 +3004,7 @@ gnc_invoice_search (GncInvoice *start, GncOwner *owner, QofBook *book)
static GNCSearchCallbackButton *buttons; static GNCSearchCallbackButton *buttons;
static GNCSearchCallbackButton inv_buttons[] = static GNCSearchCallbackButton inv_buttons[] =
{ {
{ N_("View/Edit Invoice"), edit_invoice_cb, NULL, TRUE}, { N_("View/Edit Invoice"), NULL, multi_edit_invoice_cb, TRUE},
{ N_("Process Payment"), pay_invoice_cb, NULL, FALSE}, { N_("Process Payment"), pay_invoice_cb, NULL, FALSE},
{ N_("Duplicate"), NULL, multi_duplicate_invoice_cb, FALSE}, { N_("Duplicate"), NULL, multi_duplicate_invoice_cb, FALSE},
{ N_("Post"), NULL, multi_post_invoice_cb, FALSE}, { N_("Post"), NULL, multi_post_invoice_cb, FALSE},
@@ -3008,7 +3013,7 @@ gnc_invoice_search (GncInvoice *start, GncOwner *owner, QofBook *book)
}; };
static GNCSearchCallbackButton bill_buttons[] = static GNCSearchCallbackButton bill_buttons[] =
{ {
{ N_("View/Edit Bill"), edit_invoice_cb, NULL, TRUE}, { N_("View/Edit Bill"), NULL, multi_edit_invoice_cb, TRUE},
{ N_("Process Payment"), pay_invoice_cb, NULL, FALSE}, { N_("Process Payment"), pay_invoice_cb, NULL, FALSE},
{ N_("Duplicate"), NULL, multi_duplicate_invoice_cb, FALSE}, { N_("Duplicate"), NULL, multi_duplicate_invoice_cb, FALSE},
{ N_("Post"), NULL, multi_post_invoice_cb, FALSE}, { N_("Post"), NULL, multi_post_invoice_cb, FALSE},
@@ -3019,7 +3024,7 @@ gnc_invoice_search (GncInvoice *start, GncOwner *owner, QofBook *book)
{ {
/* Translators: The terms 'Voucher' and 'Expense Voucher' are used /* Translators: The terms 'Voucher' and 'Expense Voucher' are used
interchangeably in gnucash and mean the same thing. */ interchangeably in gnucash and mean the same thing. */
{ N_("View/Edit Voucher"), edit_invoice_cb, NULL, TRUE}, { N_("View/Edit Voucher"), NULL, multi_edit_invoice_cb, TRUE},
{ N_("Process Payment"), pay_invoice_cb, NULL, FALSE}, { N_("Process Payment"), pay_invoice_cb, NULL, FALSE},
{ N_("Duplicate"), NULL, multi_duplicate_invoice_cb, FALSE}, { N_("Duplicate"), NULL, multi_duplicate_invoice_cb, FALSE},
{ N_("Post"), NULL, multi_post_invoice_cb, FALSE}, { N_("Post"), NULL, multi_post_invoice_cb, FALSE},

View File

@@ -9,7 +9,21 @@ MACRO (GNC_ADD_SWIG_COMMAND _target _input)
ADD_CUSTOM_COMMAND ( ADD_CUSTOM_COMMAND (
OUTPUT ${_target} OUTPUT ${_target}
DEPENDS ${_input} ${CMAKE_SOURCE_DIR}/src/base-typemaps.i ${ARGN} DEPENDS ${_input} ${CMAKE_SOURCE_DIR}/src/base-typemaps.i ${ARGN}
COMMAND ${SWIG_EXECUTABLE} -guile ${SWIG_ARGS} -Linkage module -I${CMAKE_SOURCE_DIR}/src/libqof/qof -I${CMAKE_SOURCE_DIR}/src -o ${_target} ${_input} COMMAND ${SWIG_EXECUTABLE} -guile ${SWIG_ARGS} -Linkage module -I${CMAKE_SOURCE_DIR}/src/libqof/qof -I${CMAKE_SOURCE_DIR}/src -o ${_target} ${_input}
) )
ENDMACRO (GNC_ADD_SWIG_COMMAND) ENDMACRO (GNC_ADD_SWIG_COMMAND)
MACRO (GNC_ADD_SWIG_PYTHON_COMMAND _target _output _input)
ADD_CUSTOM_COMMAND(OUTPUT ${_output}
COMMAND ${SWIG_EXECUTABLE} -python -Wall -Werror ${SWIG_ARGS}
-I${CMAKE_SOURCE_DIR}/src/libqof/qof -I${CMAKE_SOURCE_DIR}/src
-I${CMAKE_SOURCE_DIR}/src/engine -I${CMAKE_SOURCE_DIR}/src/app-utils
-o ${_output} ${_input}
DEPENDS ${_input} ${CMAKE_SOURCE_DIR}/src/base-typemaps.i ${ARGN}
)
ADD_CUSTOM_TARGET(${_target} ALL DEPENDS ${_output} ${CMAKE_SOURCE_DIR}/src/base-typemaps.i ${_input} ${ARGN})
ENDMACRO()

View File

@@ -327,6 +327,10 @@
your system. */ your system. */
#cmakedefine PTHREAD_CREATE_JOINABLE 1 #cmakedefine PTHREAD_CREATE_JOINABLE 1
/* Result of LibOFX Bug 39 detection (see
https://sourceforge.net/p/libofx/bugs/39/ for details). */
#cmakedefine HAVE_OFX_BUG_39 1
/* Name of package containing qt3-wizard. */ /* Name of package containing qt3-wizard. */
#define QT3_WIZARD_PACKAGE "aqbanking" #define QT3_WIZARD_PACKAGE "aqbanking"

View File

@@ -1,9 +1,16 @@
# CMakeLists.txt for src/core-utils # CMakeLists.txt for src/core-utils
ADD_SUBDIRECTORY(test) ADD_SUBDIRECTORY(test)
# Command to generate the swig-engine.c wrapper file
SET (SWIG_CORE_UTILS_C ${CMAKE_CURRENT_BINARY_DIR}/swig-core-utils.c) IF (BUILDING_FROM_VCS)
GNC_ADD_SWIG_COMMAND (${SWIG_CORE_UTILS_C} ${CMAKE_CURRENT_SOURCE_DIR}/core-utils.i) SET (SWIG_CORE_UTILS_GUILE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-core-utils-guile.c)
GNC_ADD_SWIG_COMMAND (${SWIG_CORE_UTILS_GUILE_C} ${CMAKE_CURRENT_SOURCE_DIR}/core-utils.i)
SET (SWIG_CORE_UTILS_PYTHON_C ${CMAKE_CURRENT_BINARY_DIR}/swig-core-utils-python.c)
GNC_ADD_SWIG_PYTHON_COMMAND (swig-core-utils-python ${SWIG_CORE_UTILS_PYTHON_C} ${CMAKE_CURRENT_SOURCE_DIR}/core-utils.i)
ELSE()
SET(SWIG_CORE_UTILS_GUILE_C swig-core-utils-guile.c)
SET(SWIG_CORE_UTILS_PYTHON_C swig-core-utils-python.c)
ENDIF()
SET (core_utils_SOURCES SET (core_utils_SOURCES
binreloc.c binreloc.c
@@ -19,7 +26,6 @@ SET (core_utils_SOURCES
gnc-locale-utils.c gnc-locale-utils.c
gnc-path.c gnc-path.c
gnc-uri-utils.c gnc-uri-utils.c
${SWIG_CORE_UTILS_C}
) )
# Add dependency on config.h # Add dependency on config.h
@@ -102,33 +108,59 @@ SET(core_utils_noinst_HEADERS
gnc-uri-utils.h gnc-uri-utils.h
) )
ADD_LIBRARY (gnc-core-utils SET(core_utils_ALL_SOURCES ${core_utils_SOURCES} ${core_utils_noinst_HEADERS})
${core_utils_SOURCES} SET(core_utils_ALL_LIBRARIES gnc-qof ${GUILE_LDFLAGS} ${GLIB2_LDFLAGS} ${GOBJECT_LDFLAGS} ${GTK_MAC_LDFLAGS})
${core_utils_noinst_HEADERS} SET(core_utils_ALL_INCLUDES ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}
) ${GUILE_INCLUDE_DIRS} ${GTK_MAC_INCLUDE_DIRS})
IF (MAC_INTEGRATION)
LIST(APPEND core_utils_ALL_LIBRARIES ${OSX_EXTRA_LIBRARIES})
ENDIF()
ADD_LIBRARY (gnc-core-utils ${core_utils_ALL_SOURCES} ${SWIG_CORE_UTILS_GUILE_C})
ADD_DEPENDENCIES(gnc-core-utils gnc-vcs-info) ADD_DEPENDENCIES(gnc-core-utils gnc-vcs-info)
TARGET_LINK_LIBRARIES(gnc-core-utils gnc-qof ${GUILE_LDFLAGS} ${GLIB2_LDFLAGS} ${GOBJECT_LDFLAGS} ${GTK_MAC_LDFLAGS}) TARGET_LINK_LIBRARIES(gnc-core-utils ${core_utils_ALL_LIBRARIES})
TARGET_COMPILE_DEFINITIONS(gnc-core-utils TARGET_COMPILE_DEFINITIONS(gnc-core-utils
PRIVATE -DG_LOG_DOMAIN=\"gnc.core-utils\" ${GTK_MAC_CFLAGS_OTHER}) PRIVATE -DG_LOG_DOMAIN=\"gnc.core-utils\" ${GTK_MAC_CFLAGS_OTHER})
TARGET_INCLUDE_DIRECTORIES(gnc-core-utils PUBLIC TARGET_INCLUDE_DIRECTORIES(gnc-core-utils PUBLIC ${core_utils_ALL_INCLUDES})
${CMAKE_CURRENT_BINARY_DIR} # for headers generated in core-utils build directory
${CMAKE_CURRENT_SOURCE_DIR}
${GUILE_INCLUDE_DIRS}
${GTK_MAC_INCLUDE_DIRS}
)
IF (MAC_INTEGRATION) IF (MAC_INTEGRATION)
TARGET_COMPILE_OPTIONS(gnc-core-utils PRIVATE ${OSX_EXTRA_COMPILE_FLAGS}) TARGET_COMPILE_OPTIONS(gnc-core-utils PRIVATE ${OSX_EXTRA_COMPILE_FLAGS})
TARGET_LINK_LIBRARIES(gnc-core-utils ${OSX_EXTRA_LIBRARIES})
ENDIF(MAC_INTEGRATION) ENDIF(MAC_INTEGRATION)
INSTALL(TARGETS gnc-core-utils INSTALL(TARGETS gnc-core-utils
LIBRARY DESTINATION lib LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib ARCHIVE DESTINATION lib
RUNTIME DESTINATION bin) RUNTIME DESTINATION bin
)
IF (WITH_PYTHON)
ADD_LIBRARY (gnc-core-utils-python ${core_utils_ALL_SOURCES} ${SWIG_CORE_UTILS_PYTHON_C})
ADD_DEPENDENCIES(gnc-core-utils-python gnc-vcs-info)
TARGET_LINK_LIBRARIES(gnc-core-utils-python ${core_utils_ALL_LIBRARIES} ${PYTHON_LIBRARIES})
TARGET_COMPILE_DEFINITIONS(gnc-core-utils-python
PRIVATE -DG_LOG_DOMAIN=\"gnc.core-utils\" ${GTK_MAC_CFLAGS_OTHER}
)
TARGET_INCLUDE_DIRECTORIES(gnc-core-utils-python PUBLIC ${core_utils_ALL_INCLUDES} ${PYTHON_INCLUDE_DIRS})
IF (MAC_INTEGRATION)
TARGET_COMPILE_OPTIONS(gnc-core-utils-python PRIVATE ${OSX_EXTRA_COMPILE_FLAGS})
ENDIF(MAC_INTEGRATION)
INSTALL(TARGETS gnc-core-utils-python
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
RUNTIME DESTINATION bin
)
ENDIF()
# No headers to install # No headers to install
# Scheme # Scheme

View File

@@ -0,0 +1,38 @@
SET(gnucash_design_TEXINFOS
component-manager.texi
concept-index.texi
engine.texi
fdl.texi
function-index.texi
intro.texi
register.texi
reports.texi
top-level.texi
type-index.texi
user-preferences.texi
)
EXECUTE_PROCESS(COMMAND date +%e OUTPUT_VARIABLE CURRENT_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
EXECUTE_PROCESS(COMMAND date +%B OUTPUT_VARIABLE CURRENT_MONTH OUTPUT_STRIP_TRAILING_WHITESPACE)
EXECUTE_PROCESS(COMMAND date +%Y OUTPUT_VARIABLE CURRENT_YEAR OUTPUT_STRIP_TRAILING_WHITESPACE)
SET(UPDATED "${CURRENT_DATE} ${CURRENT_MONTH} ${CURRENT_YEAR}")
SET(UPDATED_MONTH "${CURRENT_MONTH} ${CURRENT_YEAR}")
SET(VERSION_TEXI_IN
"@set UPDATED ${UPDATED}
@set UPDATED-MONTH ${UPDATED_MONTH}
@set EDITION ${VERSION}
@set VERSION ${VERSION}
")
FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/version.texi ${VERSION_TEXI_IN})
FILE(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}" TEXI_BINARY_DIR)
FILE(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/gnucash-design.texi" TEXI_SOURCE_FILE)
ADD_CUSTOM_TARGET(gnucash-design.texi ALL
COMMAND makeinfo -I ${TEXI_BINARY_DIR} ${TEXI_SOURCE_FILE}
DEPENDS ${gnucash_design_TEXINFOS}
)

View File

@@ -86,6 +86,7 @@ Book = element gnc:book {
element gnc:count-data { attribute cd:type { "transaction" }, xsd:int }?, element gnc:count-data { attribute cd:type { "transaction" }, xsd:int }?,
element gnc:count-data { attribute cd:type { "schedxaction" }, xsd:int }?, element gnc:count-data { attribute cd:type { "schedxaction" }, xsd:int }?,
element gnc:count-data { attribute cd:type { "budget" }, xsd:int }?, element gnc:count-data { attribute cd:type { "budget" }, xsd:int }?,
element gnc:count-data { attribute cd:type { "price" }, xsd:int }?,
# plugins (those with a get_count slot) # plugins (those with a get_count slot)

View File

@@ -88,6 +88,7 @@ enum
PROP_PLACEHOLDER, /* Table slot exists, but in KVP in memory & xml */ PROP_PLACEHOLDER, /* Table slot exists, but in KVP in memory & xml */
PROP_FILTER, /* KVP */ PROP_FILTER, /* KVP */
PROP_SORT_ORDER, /* KVP */ PROP_SORT_ORDER, /* KVP */
PROP_SORT_REVERSED,
PROP_LOT_NEXT_ID, /* KVP */ PROP_LOT_NEXT_ID, /* KVP */
PROP_ONLINE_ACCOUNT, /* KVP */ PROP_ONLINE_ACCOUNT, /* KVP */
@@ -400,6 +401,8 @@ gnc_account_get_property (GObject *object,
case PROP_SORT_ORDER: case PROP_SORT_ORDER:
g_value_set_string(value, xaccAccountGetSortOrder(account)); g_value_set_string(value, xaccAccountGetSortOrder(account));
break; break;
case PROP_SORT_REVERSED:
g_value_set_boolean(value, xaccAccountGetSortReversed(account));
case PROP_LOT_NEXT_ID: case PROP_LOT_NEXT_ID:
key = "lot-mgmt/next-id"; key = "lot-mgmt/next-id";
/* Pre-set the value in case the frame is empty */ /* Pre-set the value in case the frame is empty */
@@ -532,6 +535,8 @@ gnc_account_set_property (GObject *object,
case PROP_SORT_ORDER: case PROP_SORT_ORDER:
xaccAccountSetSortOrder(account, g_value_get_string(value)); xaccAccountSetSortOrder(account, g_value_get_string(value));
break; break;
case PROP_SORT_REVERSED:
xaccAccountSetSortReversed(account, g_value_get_boolean(value));
case PROP_LOT_NEXT_ID: case PROP_LOT_NEXT_ID:
key = "lot-mgmt/next-id"; key = "lot-mgmt/next-id";
qof_instance_set_kvp (QOF_INSTANCE (account), key, value); qof_instance_set_kvp (QOF_INSTANCE (account), key, value);
@@ -918,6 +923,15 @@ gnc_account_class_init (AccountClass *klass)
NULL, NULL,
G_PARAM_READWRITE)); G_PARAM_READWRITE));
g_object_class_install_property
(gobject_class,
PROP_SORT_REVERSED,
g_param_spec_boolean ("sort-reversed",
"Account Sort Reversed",
"Parameter to store whether the sort order is reversed or not.",
FALSE,
G_PARAM_READWRITE));
g_object_class_install_property g_object_class_install_property
(gobject_class, (gobject_class,
PROP_LOT_NEXT_ID, PROP_LOT_NEXT_ID,
@@ -2339,6 +2353,12 @@ xaccAccountSetSortOrder (Account *acc, const char *str)
set_kvp_string_tag (acc, "sort-order", str); set_kvp_string_tag (acc, "sort-order", str);
} }
void
xaccAccountSetSortReversed (Account *acc, gboolean sortreversed)
{
set_kvp_string_tag (acc, "sort-reversed", sortreversed ? "true" : NULL);
}
static void static void
qofAccountSetParent (Account *acc, QofInstance *parent) qofAccountSetParent (Account *acc, QofInstance *parent)
{ {
@@ -3098,6 +3118,14 @@ xaccAccountGetSortOrder (const Account *acc)
return get_kvp_string_tag (acc, "sort-order"); return get_kvp_string_tag (acc, "sort-order");
} }
gboolean
xaccAccountGetSortReversed (const Account *acc)
{
g_return_val_if_fail(GNC_IS_ACCOUNT(acc), FALSE);
return g_strcmp0 (get_kvp_string_tag (acc, "sort-reversed"), "true") == 0;
}
const char * const char *
xaccAccountGetNotes (const Account *acc) xaccAccountGetNotes (const Account *acc)
{ {
@@ -6019,6 +6047,11 @@ gboolean xaccAccountRegister (void)
(QofAccessFunc) xaccAccountGetSortOrder, (QofAccessFunc) xaccAccountGetSortOrder,
(QofSetterFunc) xaccAccountSetSortOrder (QofSetterFunc) xaccAccountSetSortOrder
}, },
{
ACCOUNT_SORT_REVERSED_, QOF_TYPE_BOOLEAN,
(QofAccessFunc) xaccAccountGetSortReversed,
(QofSetterFunc) xaccAccountSetSortReversed
},
{ {
ACCOUNT_NOTES_, QOF_TYPE_STRING, ACCOUNT_NOTES_, QOF_TYPE_STRING,
(QofAccessFunc) xaccAccountGetNotes, (QofAccessFunc) xaccAccountGetNotes,

View File

@@ -299,6 +299,8 @@ void xaccAccountSetColor (Account *account, const char *color);
void xaccAccountSetFilter (Account *account, const char *filter); void xaccAccountSetFilter (Account *account, const char *filter);
/** Set the account's Sort Order */ /** Set the account's Sort Order */
void xaccAccountSetSortOrder (Account *account, const char *sortorder); void xaccAccountSetSortOrder (Account *account, const char *sortorder);
/** Set the account's Sort Order direction */
void xaccAccountSetSortReversed (Account *account, gboolean sortreversed);
/** Set the account's notes */ /** Set the account's notes */
void xaccAccountSetNotes (Account *account, const char *notes); void xaccAccountSetNotes (Account *account, const char *notes);
/** Set the last num field of an Account */ /** Set the last num field of an Account */
@@ -390,6 +392,8 @@ const char * xaccAccountGetColor (const Account *account);
const char * xaccAccountGetFilter (const Account *account); const char * xaccAccountGetFilter (const Account *account);
/** Get the account's Sort Order */ /** Get the account's Sort Order */
const char * xaccAccountGetSortOrder (const Account *account); const char * xaccAccountGetSortOrder (const Account *account);
/** Get the account's Sort Order direction */
gboolean xaccAccountGetSortReversed (const Account *account);
/** Get the account's notes */ /** Get the account's notes */
const char * xaccAccountGetNotes (const Account *account); const char * xaccAccountGetNotes (const Account *account);
/** Get the last num field of an Account */ /** Get the last num field of an Account */
@@ -1489,6 +1493,7 @@ const char * dxaccAccountGetQuoteTZ (const Account *account);
#define ACCOUNT_COLOR_ "color" #define ACCOUNT_COLOR_ "color"
#define ACCOUNT_FILTER_ "filter" #define ACCOUNT_FILTER_ "filter"
#define ACCOUNT_SORT_ORDER_ "sort-order" #define ACCOUNT_SORT_ORDER_ "sort-order"
#define ACCOUNT_SORT_REVERSED_ "sort-reversed"
#define ACCOUNT_NOTES_ "notes" #define ACCOUNT_NOTES_ "notes"
#define ACCOUNT_BALANCE_ "balance" #define ACCOUNT_BALANCE_ "balance"
#define ACCOUNT_CLEARED_ "cleared" #define ACCOUNT_CLEARED_ "cleared"

View File

@@ -73,9 +73,13 @@ SET (engine_HEADERS
gncVendorP.h gncVendorP.h
) )
# Command to generate the swig-engine.c wrapper file IF (BUILDING_FROM_VCS)
SET (SWIG_ENGINE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-engine.c) # Command to generate the swig-engine.c wrapper file
GNC_ADD_SWIG_COMMAND (${SWIG_ENGINE_C} ${CMAKE_CURRENT_SOURCE_DIR}/engine.i ${engine_HEADERS}) SET (SWIG_ENGINE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-engine.c)
GNC_ADD_SWIG_COMMAND (${SWIG_ENGINE_C} ${CMAKE_CURRENT_SOURCE_DIR}/engine.i ${engine_HEADERS})
ELSE()
SET (SWIG_ENGINE_C swig-engine.c)
ENDIF()
# Command to generate the iso-4217-currencies.c file # Command to generate the iso-4217-currencies.c file
SET (ISO_4217_C ${CMAKE_CURRENT_BINARY_DIR}/iso-4217-currencies.c) SET (ISO_4217_C ${CMAKE_CURRENT_BINARY_DIR}/iso-4217-currencies.c)

View File

@@ -158,7 +158,8 @@ const char * xaccSplitGetMemo (const Split *split);
* It is meant to be a very short (one to ten character) string that * It is meant to be a very short (one to ten character) string that
* signifies the "type" of this split, such as e.g. Buy, Sell, Div, * signifies the "type" of this split, such as e.g. Buy, Sell, Div,
* Withdraw, Deposit, ATM, Check, etc. The idea is that this field * Withdraw, Deposit, ATM, Check, etc. The idea is that this field
* can be used to create custom reports or graphs of data. Rather than use * can be used to create custom reports or graphs of data. Note that the
* business features auto-fill this value, but doesn't depend on it. Rather than use
* this function directly, see 'gnc_set_num_action' in * this function directly, see 'gnc_set_num_action' in
* engine/engine-helpers.c & .h which takes a user-set book option for selecting * engine/engine-helpers.c & .h which takes a user-set book option for selecting
* the source for the num-cell (the transaction-number or the split-action field) * the source for the num-cell (the transaction-number or the split-action field)

View File

@@ -66,6 +66,8 @@ void mark_address (GncAddress *address)
{ {
address->dirty = TRUE; address->dirty = TRUE;
if (address->parent)
qof_instance_set_dirty(address->parent);
qof_event_gen (QOF_INSTANCE(address), QOF_EVENT_MODIFY, address->parent); qof_event_gen (QOF_INSTANCE(address), QOF_EVENT_MODIFY, address->parent);
qof_event_gen (address->parent, QOF_EVENT_MODIFY, NULL); qof_event_gen (address->parent, QOF_EVENT_MODIFY, NULL);
} }

View File

@@ -2158,7 +2158,7 @@
exchange-code="643" exchange-code="643"
parts-per-unit="100" parts-per-unit="100"
smallest-fraction="100" smallest-fraction="100"
local-symbol="руб" local-symbol=""
/> />
<!-- "RWF" - "Rwanda Franc" <!-- "RWF" - "Rwanda Franc"
--> -->

View File

@@ -73,13 +73,15 @@ GNC_TEST_DEPS = \
--guile-load-dir ${top_builddir}/src/app-utils \ --guile-load-dir ${top_builddir}/src/app-utils \
--guile-load-dir ${top_builddir}/src/core-utils \ --guile-load-dir ${top_builddir}/src/core-utils \
--guile-load-dir ${top_builddir}/src/scm \ --guile-load-dir ${top_builddir}/src/scm \
--guile-load-dir ${top_builddir}/src/engine/test \
--library-dir ${top_builddir}/src/libqof/qof \ --library-dir ${top_builddir}/src/libqof/qof \
--library-dir ${top_builddir}/src/core-utils \ --library-dir ${top_builddir}/src/core-utils \
--library-dir ${top_builddir}/src/gnc-module \ --library-dir ${top_builddir}/src/gnc-module \
--library-dir ${top_builddir}/src/engine \ --library-dir ${top_builddir}/src/engine \
--library-dir ${top_builddir}/src/app-utils \ --library-dir ${top_builddir}/src/app-utils \
--library-dir ${top_builddir}/src/backend/xml \ --library-dir ${top_builddir}/src/backend/xml \
--library-dir ${top_builddir}/src/backend/sql --library-dir ${top_builddir}/src/backend/sql \
--library-dir ${top_builddir}/src/engine/test
test_account_object_SOURCES = test-account-object.cpp test_account_object_SOURCES = test-account-object.cpp
test_commodities_SOURCES = test-commodities.cpp test_commodities_SOURCES = test-commodities.cpp

View File

@@ -1,9 +1,13 @@
# CMakeLists.txt for src/gnc-module # CMakeLists.txt for src/gnc-module
ADD_SUBDIRECTORY(test) ADD_SUBDIRECTORY(test)
# Command to generate the swig-engine.c wrapper file IF (BUILDING_FROM_VCS)
SET (SWIG_GNC_MODULE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnc-module.c) # Command to generate the swig-engine.c wrapper file
GNC_ADD_SWIG_COMMAND (${SWIG_GNC_MODULE_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnc-module.i) SET (SWIG_GNC_MODULE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnc-module.c)
GNC_ADD_SWIG_COMMAND (${SWIG_GNC_MODULE_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnc-module.i)
ELSE()
SET (SWIG_GNC_MODULE_C swig-gnc-module.c)
ENDIF()
SET (gnc_module_SOURCES SET (gnc_module_SOURCES
gnc-module.c gnc-module.c

View File

@@ -1,6 +1,10 @@
SET (SWIG_BAR_C ${CMAKE_CURRENT_BINARY_DIR}/swig-bar.c) IF (BUILDING_FROM_VCS)
GNC_ADD_SWIG_COMMAND (${SWIG_BAR_C} ${CMAKE_CURRENT_SOURCE_DIR}/bar.i bar.h) SET (SWIG_BAR_C ${CMAKE_CURRENT_BINARY_DIR}/swig-bar.c)
GNC_ADD_SWIG_COMMAND (${SWIG_BAR_C} ${CMAKE_CURRENT_SOURCE_DIR}/bar.i bar.h)
ELSE()
SET (SWIG_BAR_C swig-bar.c)
ENDIF()
ADD_LIBRARY(bar EXCLUDE_FROM_ALL bar.c bar.h) ADD_LIBRARY(bar EXCLUDE_FROM_ALL bar.c bar.h)
ADD_LIBRARY(gncmodbar EXCLUDE_FROM_ALL gnc-mod-bar.c) ADD_LIBRARY(gncmodbar EXCLUDE_FROM_ALL gnc-mod-bar.c)

View File

@@ -1,6 +1,10 @@
SET (SWIG_BAZ_C ${CMAKE_CURRENT_BINARY_DIR}/swig-baz.c) IF (BUILDING_FROM_VCS)
GNC_ADD_SWIG_COMMAND (${SWIG_BAZ_C} ${CMAKE_CURRENT_SOURCE_DIR}/baz.i baz.h) SET (SWIG_BAZ_C ${CMAKE_CURRENT_BINARY_DIR}/swig-baz.c)
GNC_ADD_SWIG_COMMAND (${SWIG_BAZ_C} ${CMAKE_CURRENT_SOURCE_DIR}/baz.i baz.h)
ELSE()
SET (SWIG_BAZ_C swig-baz.c)
ENDIF()
ADD_LIBRARY(baz EXCLUDE_FROM_ALL baz.c baz.h) ADD_LIBRARY(baz EXCLUDE_FROM_ALL baz.c baz.h)
TARGET_INCLUDE_DIRECTORIES(baz PRIVATE TARGET_INCLUDE_DIRECTORIES(baz PRIVATE

View File

@@ -1,6 +1,10 @@
SET (SWIG_FOO_C ${CMAKE_CURRENT_BINARY_DIR}/swig-foo.c) IF (BUILDING_FROM_VCS)
GNC_ADD_SWIG_COMMAND (${SWIG_FOO_C} ${CMAKE_CURRENT_SOURCE_DIR}/foo.i foo.h) SET (SWIG_FOO_C ${CMAKE_CURRENT_BINARY_DIR}/swig-foo.c)
GNC_ADD_SWIG_COMMAND (${SWIG_FOO_C} ${CMAKE_CURRENT_SOURCE_DIR}/foo.i foo.h)
ELSE()
SET (SWIG_FOO_C swig-foo.c)
ENDIF()
ADD_LIBRARY(foo EXCLUDE_FROM_ALL foo.c foo.h) ADD_LIBRARY(foo EXCLUDE_FROM_ALL foo.c foo.h)
ADD_LIBRARY(gncmodfoo EXCLUDE_FROM_ALL gnc-mod-foo.c) ADD_LIBRARY(gncmodfoo EXCLUDE_FROM_ALL gnc-mod-foo.c)

View File

@@ -107,7 +107,6 @@ gnc_search_boolean_class_init (GNCSearchBooleanClass *klass)
static void static void
gnc_search_boolean_init (GNCSearchBoolean *o) gnc_search_boolean_init (GNCSearchBoolean *o)
{ {
o->how = QOF_COMPARE_EQUAL;
o->value = TRUE; o->value = TRUE;
} }
@@ -143,14 +142,6 @@ gnc_search_boolean_set_value (GNCSearchBoolean *fi, gboolean value)
fi->value = value; fi->value = value;
} }
void
gnc_search_boolean_set_how (GNCSearchBoolean *fi, QofQueryCompare how)
{
g_return_if_fail (fi);
g_return_if_fail (IS_GNCSEARCH_BOOLEAN (fi));
fi->how = how;
}
static gboolean static gboolean
gncs_validate (GNCSearchCoreType *fe) gncs_validate (GNCSearchCoreType *fe)
{ {
@@ -171,25 +162,10 @@ toggle_changed (GtkToggleButton *button, GNCSearchBoolean *fe)
fe->value = gtk_toggle_button_get_active (button); fe->value = gtk_toggle_button_get_active (button);
} }
static GtkWidget *
make_menu (GNCSearchCoreType *fe)
{
GNCSearchBoolean *fi = (GNCSearchBoolean *)fe;
GtkComboBox *combo;
combo = GTK_COMBO_BOX(gnc_combo_box_new_search());
gnc_combo_box_search_add(combo, _("is"), QOF_COMPARE_EQUAL);
gnc_combo_box_search_add(combo, _("is not"), QOF_COMPARE_NEQ);
gnc_combo_box_search_changed(combo, &fi->how);
gnc_combo_box_search_set_active(combo, fi->how ? fi->how : QOF_COMPARE_EQUAL);
return GTK_WIDGET(combo);
}
static GtkWidget * static GtkWidget *
gncs_get_widget (GNCSearchCoreType *fe) gncs_get_widget (GNCSearchCoreType *fe)
{ {
GtkWidget *toggle, *menu, *box; GtkWidget *toggle, *box;
GNCSearchBoolean *fi = (GNCSearchBoolean *)fe; GNCSearchBoolean *fi = (GNCSearchBoolean *)fe;
g_return_val_if_fail (fi, NULL); g_return_val_if_fail (fi, NULL);
@@ -197,12 +173,8 @@ gncs_get_widget (GNCSearchCoreType *fe)
box = gtk_hbox_new (FALSE, 3); box = gtk_hbox_new (FALSE, 3);
/* Build and connect the option menu */
menu = make_menu (fe);
gtk_box_pack_start (GTK_BOX (box), menu, FALSE, FALSE, 3);
/* Build and connect the toggle */ /* Build and connect the toggle */
toggle = gtk_toggle_button_new_with_label (_("set true")); toggle = gtk_check_button_new ();
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), fi->value); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), fi->value);
g_signal_connect (G_OBJECT (toggle), "toggled", G_CALLBACK (toggle_changed), fe); g_signal_connect (G_OBJECT (toggle), "toggled", G_CALLBACK (toggle_changed), fe);
gtk_box_pack_start (GTK_BOX (box), toggle, FALSE, FALSE, 3); gtk_box_pack_start (GTK_BOX (box), toggle, FALSE, FALSE, 3);
@@ -218,7 +190,7 @@ static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe)
g_return_val_if_fail (fi, NULL); g_return_val_if_fail (fi, NULL);
g_return_val_if_fail (IS_GNCSEARCH_BOOLEAN (fi), NULL); g_return_val_if_fail (IS_GNCSEARCH_BOOLEAN (fi), NULL);
return qof_query_boolean_predicate (fi->how, fi->value); return qof_query_boolean_predicate (QOF_COMPARE_EQUAL, fi->value);
} }
static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe) static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe)
@@ -230,7 +202,6 @@ static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe)
se = gnc_search_boolean_new (); se = gnc_search_boolean_new ();
gnc_search_boolean_set_value (se, fse->value); gnc_search_boolean_set_value (se, fse->value);
gnc_search_boolean_set_how (se, fse->how);
return (GNCSearchCoreType *)se; return (GNCSearchCoreType *)se;
} }

View File

@@ -37,7 +37,6 @@ struct _GNCSearchBoolean
{ {
GNCSearchCoreType parent; GNCSearchCoreType parent;
QofQueryCompare how;
gboolean value; gboolean value;
}; };
@@ -55,7 +54,6 @@ GNCSearchBoolean *gnc_search_boolean_new (void);
/* methods */ /* methods */
void gnc_search_boolean_set_value (GNCSearchBoolean *fi, gboolean val); void gnc_search_boolean_set_value (GNCSearchBoolean *fi, gboolean val);
void gnc_search_boolean_set_how (GNCSearchBoolean *fi, QofQueryCompare how);
#endif /* ! _GNCSEARCH_BOOLEAN_H */ #endif /* ! _GNCSEARCH_BOOLEAN_H */

View File

@@ -199,7 +199,7 @@ make_toggle (GNCSearchReconciled *fi, char *label, cleared_match_t option)
{ {
GtkWidget *toggle; GtkWidget *toggle;
toggle = gtk_toggle_button_new_with_label (label); toggle = gtk_check_button_new_with_label (label);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), (fi->value & option)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), (fi->value & option));
g_object_set_data (G_OBJECT (toggle), "button-value", (gpointer) option); g_object_set_data (G_OBJECT (toggle), "button-value", (gpointer) option);
g_signal_connect (G_OBJECT (toggle), "toggled", G_CALLBACK (toggle_changed), fi); g_signal_connect (G_OBJECT (toggle), "toggled", G_CALLBACK (toggle_changed), fi);

View File

@@ -5,8 +5,12 @@ ADD_SUBDIRECTORY(gtkbuilder)
ADD_SUBDIRECTORY(ui) ADD_SUBDIRECTORY(ui)
ADD_SUBDIRECTORY(test) ADD_SUBDIRECTORY(test)
SET (SWIG_GNOME_UTILS_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnome-utils.c) IF (BUILDING_FROM_VCS)
GNC_ADD_SWIG_COMMAND (${SWIG_GNOME_UTILS_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnome-utils.i) SET (SWIG_GNOME_UTILS_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnome-utils.c)
GNC_ADD_SWIG_COMMAND (${SWIG_GNOME_UTILS_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnome-utils.i)
ELSE()
SET (SWIG_GNOME_UTILS_C swig-gnome-utils.c)
ENDIF()
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/gschemas/org.gnucash.warnings.gschema.xml.in.in CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/gschemas/org.gnucash.warnings.gschema.xml.in.in
${CMAKE_CURRENT_BINARY_DIR}/gschemas/org.gnucash.warnings.gschema.xml.in) ${CMAKE_CURRENT_BINARY_DIR}/gschemas/org.gnucash.warnings.gschema.xml.in)

View File

@@ -182,9 +182,6 @@ gdcs_generic_update_recurrences(GncDenseCalStore *trans, GDate *start, GList *re
GDate date, next; GDate date, next;
date = *start; date = *start;
/* go one day before what's in the box so we can get the correct start
* date. */
g_date_subtract_days(&date, 1);
recurrenceListNextInstance(recurrences, &date, &next); recurrenceListNextInstance(recurrences, &date, &next);
i = 0; i = 0;

View File

@@ -1738,17 +1738,25 @@ gdc_add_tag_markings(GncDenseCal *cal, guint tag)
} }
if (g_date_valid(dates[0])) if (g_date_valid(dates[0]))
{ {
if (g_date_get_julian(dates[0]) < g_date_get_julian(calDate)) if (g_date_get_julian(dates[0]) < g_date_get_julian(calDate))
{ {
_gnc_dense_cal_set_month(cal, g_date_get_month(dates[0]), FALSE); /* Oops, first marking is earlier than months displayed.
_gnc_dense_cal_set_year(cal, g_date_get_year(dates[0]), FALSE); * Choose new first month and recalculate all markings for all
} * tags. Their offsets are all wrong with the newly added month(s).
*/
_gnc_dense_cal_set_month(cal, g_date_get_month(dates[0]), FALSE);
_gnc_dense_cal_set_year(cal, g_date_get_year(dates[0]), FALSE);
gdc_remove_markings (cal);
gdc_add_markings (cal);
}
else
gdc_mark_add(cal, tag, name, info, num_marks, dates);
} }
else else
{ {
g_warning("Bad date, skipped."); g_warning("Bad date, skipped.");
} }
gdc_mark_add(cal, tag, name, info, num_marks, dates);
for (idx = 0; idx < num_marks; idx++) for (idx = 0; idx < num_marks; idx++)
{ {

View File

@@ -431,9 +431,10 @@ void
gnc_launch_assoc (const char *uri) gnc_launch_assoc (const char *uri)
{ {
wchar_t *winuri = NULL; wchar_t *winuri = NULL;
char* scheme = g_uri_parse_scheme(uri);
/* ShellExecuteW open doesn't decode http escapes if it's passed a /* ShellExecuteW open doesn't decode http escapes if it's passed a
* file URI so we have to do it. */ * file URI so we have to do it. */
if (strcmp (g_uri_parse_scheme(uri), "file") == 0) if (scheme && strcmp (scheme, "file") == 0)
{ {
gchar *filename = g_filename_from_uri (uri, NULL, NULL); gchar *filename = g_filename_from_uri (uri, NULL, NULL);
winuri = (wchar_t *)g_utf8_to_utf16(filename, -1, NULL, NULL, NULL); winuri = (wchar_t *)g_utf8_to_utf16(filename, -1, NULL, NULL, NULL);
@@ -455,6 +456,7 @@ gnc_launch_assoc (const char *uri)
g_free (wincmd); g_free (wincmd);
g_free (winuri); g_free (winuri);
} }
g_free (scheme);
} }
#else #else

View File

@@ -1104,10 +1104,8 @@ void gnc_tree_view_save_state (GncTreeView *view)
gchar *sort_order = gnc_tree_view_get_sort_order (view); gchar *sort_order = gnc_tree_view_get_sort_order (view);
gchar **col_order = gnc_tree_view_get_column_order (view, &num_cols); gchar **col_order = gnc_tree_view_get_column_order (view, &num_cols);
/* Default sort column is the first column */ /* Default sort column is the name column */
if (sort_column && if (sort_column && (g_strcmp0 (sort_column, "name") != 0))
(gnc_tree_view_find_column_by_name (view, sort_column) !=
gtk_tree_view_get_column (GTK_TREE_VIEW (view), 0)))
g_key_file_set_string (state_file, priv->state_section, STATE_KEY_SORT_COLUMN, sort_column); g_key_file_set_string (state_file, priv->state_section, STATE_KEY_SORT_COLUMN, sort_column);
else if (g_key_file_has_key (state_file, priv->state_section, STATE_KEY_SORT_COLUMN, NULL)) else if (g_key_file_has_key (state_file, priv->state_section, STATE_KEY_SORT_COLUMN, NULL))
g_key_file_remove_key (state_file, priv->state_section, STATE_KEY_SORT_COLUMN, NULL); g_key_file_remove_key (state_file, priv->state_section, STATE_KEY_SORT_COLUMN, NULL);

View File

@@ -41,8 +41,12 @@ SET (gnc_gnome_noinst_HEADERS
window-autoclear.h window-autoclear.h
) )
SET (SWIG_GNOME_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnome.c) IF (BUILDING_FROM_VCS)
GNC_ADD_SWIG_COMMAND (${SWIG_GNOME_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnome.i ${gnc_gnome_HEADERS}) SET (SWIG_GNOME_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnome.c)
GNC_ADD_SWIG_COMMAND (${SWIG_GNOME_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnome.i ${gnc_gnome_HEADERS})
ELSE()
SET (SWIG_GNOME_C swig-gnome.c)
ENDIF()
SET (gnc_gnome_SOURCES SET (gnc_gnome_SOURCES
${SWIG_GNOME_C} ${SWIG_GNOME_C}

View File

@@ -392,7 +392,7 @@ gnc_lot_viewer_fill (GNCLotViewer *lv)
} }
else else
{ {
gtk_list_store_set(store, &iter, LOT_COL_CLOSE, 0, -1); gtk_list_store_set(store, &iter, LOT_COL_CLOSE, 0LL, -1);
} }
/* Title */ /* Title */

View File

@@ -1607,9 +1607,15 @@ gnc_sxed_update_cal(GncSxEditorDialog *sxed)
&& g_date_valid(&first_date) && g_date_valid(&first_date)
&& g_date_compare(last_sx_inst, &first_date) != 0) && g_date_compare(last_sx_inst, &first_date) != 0)
{ {
/* last occurrence will be passed as initial date to update store
* later on as well */
start_date = *last_sx_inst; start_date = *last_sx_inst;
recurrenceListNextInstance(recurrences, &start_date, &first_date); recurrenceListNextInstance(recurrences, &start_date, &first_date);
} }
else
/* move one day back so the store can get the proper first recurrence. */
g_date_subtract_days(&start_date, 1);
} }
if (!g_date_valid(&first_date)) if (!g_date_valid(&first_date))
@@ -1635,17 +1641,17 @@ gnc_sxed_update_cal(GncSxEditorDialog *sxed)
GDate end_date; GDate end_date;
g_date_clear (&end_date, 1); g_date_clear (&end_date, 1);
gnc_gdate_set_time64 (&end_date, gnc_date_edit_get_date(sxed->endDateEntry)); gnc_gdate_set_time64 (&end_date, gnc_date_edit_get_date(sxed->endDateEntry));
gnc_dense_cal_store_update_recurrences_date_end(sxed->dense_cal_model, &first_date, recurrences, &end_date); gnc_dense_cal_store_update_recurrences_date_end(sxed->dense_cal_model, &start_date, recurrences, &end_date);
} }
else if (gtk_toggle_button_get_active(sxed->optEndNone)) else if (gtk_toggle_button_get_active(sxed->optEndNone))
{ {
gnc_dense_cal_store_update_recurrences_no_end(sxed->dense_cal_model, &first_date, recurrences); gnc_dense_cal_store_update_recurrences_no_end(sxed->dense_cal_model, &start_date, recurrences);
} }
else if (gtk_toggle_button_get_active(sxed->optEndCount)) else if (gtk_toggle_button_get_active(sxed->optEndCount))
{ {
gint num_remain gint num_remain
= gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(sxed->endRemainSpin)); = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(sxed->endRemainSpin));
gnc_dense_cal_store_update_recurrences_count_end(sxed->dense_cal_model, &first_date, recurrences, num_remain); gnc_dense_cal_store_update_recurrences_count_end(sxed->dense_cal_model, &start_date, recurrences, num_remain);
} }
else else
{ {

View File

@@ -1569,9 +1569,14 @@ gnc_sxed_update_cal (GncSxEditorDialog2 *sxed)
&& g_date_valid (&first_date) && g_date_valid (&first_date)
&& g_date_compare (last_sx_inst, &first_date) != 0) && g_date_compare (last_sx_inst, &first_date) != 0)
{ {
/* last occurrence will be passed as initial date to update store
* later on as well */
start_date = *last_sx_inst; start_date = *last_sx_inst;
recurrenceListNextInstance (recurrences, &start_date, &first_date); recurrenceListNextInstance (recurrences, &start_date, &first_date);
} }
else
/* move one day back so the store can get the proper first recurrence. */
g_date_subtract_days(&start_date, 1);
} }
if (!g_date_valid (&first_date)) if (!g_date_valid (&first_date))
@@ -1597,17 +1602,17 @@ gnc_sxed_update_cal (GncSxEditorDialog2 *sxed)
GDate end_date; GDate end_date;
g_date_clear (&end_date, 1); g_date_clear (&end_date, 1);
gnc_gdate_set_time64 (&end_date, gnc_date_edit_get_date (sxed->endDateEntry)); gnc_gdate_set_time64 (&end_date, gnc_date_edit_get_date (sxed->endDateEntry));
gnc_dense_cal_store_update_recurrences_date_end (sxed->dense_cal_model, &first_date, recurrences, &end_date); gnc_dense_cal_store_update_recurrences_date_end (sxed->dense_cal_model, &start_date, recurrences, &end_date);
} }
else if (gtk_toggle_button_get_active (sxed->optEndNone)) else if (gtk_toggle_button_get_active (sxed->optEndNone))
{ {
gnc_dense_cal_store_update_recurrences_no_end (sxed->dense_cal_model, &first_date, recurrences); gnc_dense_cal_store_update_recurrences_no_end (sxed->dense_cal_model, &start_date, recurrences);
} }
else if (gtk_toggle_button_get_active (sxed->optEndCount)) else if (gtk_toggle_button_get_active (sxed->optEndCount))
{ {
gint num_remain gint num_remain
= gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (sxed->endRemainSpin)); = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (sxed->endRemainSpin));
gnc_dense_cal_store_update_recurrences_count_end (sxed->dense_cal_model, &first_date, recurrences, num_remain); gnc_dense_cal_store_update_recurrences_count_end (sxed->dense_cal_model, &start_date, recurrences, num_remain);
} }
else else
{ {

View File

@@ -715,16 +715,17 @@ sxftd_update_example_cal( SXFromTransInfo *sxfti )
gtk_widget_set_sensitive( GTK_WIDGET(sxfti->endDateGDE), (get.type == END_ON_DATE) ); gtk_widget_set_sensitive( GTK_WIDGET(sxfti->endDateGDE), (get.type == END_ON_DATE) );
gtk_widget_set_sensitive( GTK_WIDGET(sxfti->n_occurences), (get.type == END_AFTER_N_OCCS) ); gtk_widget_set_sensitive( GTK_WIDGET(sxfti->n_occurences), (get.type == END_AFTER_N_OCCS) );
/* Use the day preceding the start date for the store to find the correct real start date */
switch (get.type) switch (get.type)
{ {
case NEVER_END: case NEVER_END:
gnc_dense_cal_store_update_recurrences_no_end(sxfti->dense_cal_model, &startDate, schedule); gnc_dense_cal_store_update_recurrences_no_end(sxfti->dense_cal_model, &date, schedule);
break; break;
case END_ON_DATE: case END_ON_DATE:
gnc_dense_cal_store_update_recurrences_date_end(sxfti->dense_cal_model, &startDate, schedule, &get.end_date); gnc_dense_cal_store_update_recurrences_date_end(sxfti->dense_cal_model, &date, schedule, &get.end_date);
break; break;
case END_AFTER_N_OCCS: case END_AFTER_N_OCCS:
gnc_dense_cal_store_update_recurrences_count_end(sxfti->dense_cal_model, &startDate, schedule, get.n_occurrences); gnc_dense_cal_store_update_recurrences_count_end(sxfti->dense_cal_model, &date, schedule, get.n_occurrences);
break; break;
default: default:
g_warning("unknown get.type [%d]\n", get.type); g_warning("unknown get.type [%d]\n", get.type);

View File

@@ -115,6 +115,8 @@ void gnc_plugin_page_register_sort_order_reverse_cb(GtkToggleButton *button, Gnc
static gchar *gnc_plugin_page_register_get_sort_order (GncPluginPage *plugin_page); static gchar *gnc_plugin_page_register_get_sort_order (GncPluginPage *plugin_page);
void gnc_plugin_page_register_set_sort_order (GncPluginPage *plugin_page, const gchar *sort_order); void gnc_plugin_page_register_set_sort_order (GncPluginPage *plugin_page, const gchar *sort_order);
static gboolean gnc_plugin_page_register_get_sort_reversed (GncPluginPage *plugin_page);
void gnc_plugin_page_register_set_sort_reversed (GncPluginPage *plugin_page, gboolean reverse_order);
/* Callbacks for the "Filter By" dialog */ /* Callbacks for the "Filter By" dialog */
void gnc_plugin_page_register_filter_select_range_cb(GtkRadioButton *button, GncPluginPageRegister *page); void gnc_plugin_page_register_filter_select_range_cb(GtkRadioButton *button, GncPluginPageRegister *page);
@@ -540,6 +542,7 @@ typedef struct GncPluginPageRegisterPrivate
gboolean original_save_order; gboolean original_save_order;
gboolean save_order; gboolean save_order;
gboolean reverse_order; gboolean reverse_order;
gboolean original_reverse_order;
} sd; } sd;
struct struct
@@ -1103,7 +1106,6 @@ gnc_plugin_page_register_create_widget (GncPluginPage *plugin_page)
{ {
/* Set the sort order for the split register and status of save order button */ /* Set the sort order for the split register and status of save order button */
priv->sd.save_order = FALSE; priv->sd.save_order = FALSE;
priv->sd.reverse_order = FALSE;
order = gnc_plugin_page_register_get_sort_order(plugin_page); order = gnc_plugin_page_register_get_sort_order(plugin_page);
PINFO("Loaded Sort order is %s", order); PINFO("Loaded Sort order is %s", order);
@@ -1116,6 +1118,13 @@ gnc_plugin_page_register_create_widget (GncPluginPage *plugin_page)
priv->sd.original_save_order = priv->sd.save_order; priv->sd.original_save_order = priv->sd.save_order;
g_free(order); g_free(order);
priv->sd.reverse_order = gnc_plugin_page_register_get_sort_reversed(plugin_page);
gnc_split_reg_set_sort_reversed(priv->gsr, priv->sd.reverse_order);
if (priv->sd.reverse_order)
priv->sd.save_order = TRUE;
priv->sd.original_reverse_order = priv->sd.reverse_order;
/* Set the filter for the split register and status of save filter button */ /* Set the filter for the split register and status of save filter button */
priv->fd.save_filter = FALSE; priv->fd.save_filter = FALSE;
@@ -1743,6 +1752,45 @@ gnc_plugin_page_register_set_sort_order (GncPluginPage *plugin_page, const gchar
return; return;
} }
static gboolean
gnc_plugin_page_register_get_sort_reversed (GncPluginPage *plugin_page)
{
GncPluginPageRegisterPrivate *priv;
GNCLedgerDisplayType ledger_type;
GNCLedgerDisplay *ld;
Account *leader;
gboolean sort_reversed = FALSE;
g_return_val_if_fail (GNC_IS_PLUGIN_PAGE_REGISTER (plugin_page), FALSE);
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(plugin_page);
ld = priv->ledger;
ledger_type = gnc_ledger_display_type (ld);
leader = gnc_ledger_display_leader (ld);
if ((ledger_type == LD_SINGLE) || (ledger_type == LD_SUBACCOUNT))
sort_reversed = xaccAccountGetSortReversed (leader);
return sort_reversed;
}
void
gnc_plugin_page_register_set_sort_reversed (GncPluginPage *plugin_page, gboolean reverse_order)
{
GncPluginPageRegisterPrivate *priv;
GNCLedgerDisplay *ld;
Account *leader;
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(plugin_page);
ld = priv->ledger;
leader = gnc_ledger_display_leader (ld);
if (leader != NULL)
xaccAccountSetSortReversed (leader, reverse_order);
return;
}
static gchar * static gchar *
gnc_plugin_page_register_get_long_name (GncPluginPage *plugin_page) gnc_plugin_page_register_get_long_name (GncPluginPage *plugin_page)
{ {
@@ -1893,6 +1941,8 @@ gnc_plugin_page_register_sort_response_cb (GtkDialog *dialog,
if (response != GTK_RESPONSE_OK) if (response != GTK_RESPONSE_OK)
{ {
/* Restore the original sort order */ /* Restore the original sort order */
gnc_split_reg_set_sort_reversed(priv->gsr, priv->sd.original_reverse_order);
priv->sd.reverse_order = priv->sd.original_reverse_order;
gnc_split_reg_set_sort_type(priv->gsr, priv->sd.original_sort_type); gnc_split_reg_set_sort_type(priv->gsr, priv->sd.original_sort_type);
priv->sd.save_order = priv->sd.original_save_order; priv->sd.save_order = priv->sd.original_save_order;
} }
@@ -1905,6 +1955,7 @@ gnc_plugin_page_register_sort_response_cb (GtkDialog *dialog,
type = gnc_split_reg_get_sort_type(priv->gsr); type = gnc_split_reg_get_sort_type(priv->gsr);
order = SortTypeasString(type); order = SortTypeasString(type);
gnc_plugin_page_register_set_sort_order (plugin_page, order); gnc_plugin_page_register_set_sort_order (plugin_page, order);
gnc_plugin_page_register_set_sort_reversed (plugin_page, priv->sd.reverse_order);
} }
} }
gnc_book_option_remove_cb(OPTION_NAME_NUM_FIELD_SOURCE, gnc_book_option_remove_cb(OPTION_NAME_NUM_FIELD_SOURCE,
@@ -1998,16 +2049,8 @@ gnc_plugin_page_register_sort_order_reverse_cb (GtkToggleButton *button,
/* Compute the new save sort order */ /* Compute the new save sort order */
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page); priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
if (gtk_toggle_button_get_active(button)) priv->sd.reverse_order = gtk_toggle_button_get_active(button);
{ gnc_split_reg_set_sort_reversed(priv->gsr, priv->sd.reverse_order);
gnc_split_reg_set_sort_reversed(priv->gsr, FALSE);
priv->sd.reverse_order = TRUE;
}
else
{
gnc_split_reg_set_sort_reversed(priv->gsr, TRUE);
priv->sd.reverse_order = FALSE;
}
LEAVE(" "); LEAVE(" ");
} }
@@ -3122,6 +3165,7 @@ gnc_plugin_page_register_cmd_view_sort_by (GtkAction *action,
button = GTK_WIDGET(gtk_builder_get_object (builder, "sort_reverse")); button = GTK_WIDGET(gtk_builder_get_object (builder, "sort_reverse"));
if(priv->sd.reverse_order == TRUE) if(priv->sd.reverse_order == TRUE)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
priv->sd.original_reverse_order = priv->sd.reverse_order;
priv->sd.num_radio = GTK_WIDGET(gtk_builder_get_object (builder, "BY_NUM")); priv->sd.num_radio = GTK_WIDGET(gtk_builder_get_object (builder, "BY_NUM"));
priv->sd.act_radio = GTK_WIDGET(gtk_builder_get_object (builder, "BY_ACTION")); priv->sd.act_radio = GTK_WIDGET(gtk_builder_get_object (builder, "BY_ACTION"));

View File

@@ -1844,8 +1844,13 @@ gnc_split_reg_sort_notes_cb(GtkWidget *w, gpointer data)
void void
gnc_split_reg_set_sort_reversed(GNCSplitReg *gsr, gboolean rev) gnc_split_reg_set_sort_reversed(GNCSplitReg *gsr, gboolean rev)
{ {
/* Note: sort_reversed is the boolean opposite of sort_increasing
* so when rev == true, we're sorting decreasing
* In other words, qof_query_set_sort_increasing should
* always use the inverse of rev.
*/
Query *query = gnc_ledger_display_get_query( gsr->ledger ); Query *query = gnc_ledger_display_get_query( gsr->ledger );
qof_query_set_sort_increasing (query, rev, rev, rev); qof_query_set_sort_increasing (query, !rev, !rev, !rev);
gnc_ledger_display_refresh( gsr->ledger ); gnc_ledger_display_refresh( gsr->ledger );
} }

View File

@@ -257,6 +257,7 @@ If you make a mistake or want to make changes later, you can edit the created Sc
<property name="digits">3</property> <property name="digits">3</property>
<property name="snap_to_ticks">True</property> <property name="snap_to_ticks">True</property>
<property name="numeric">True</property> <property name="numeric">True</property>
<property name="tooltip_text" translatable="yes">Enter the annual interest rate in percent. Accepts values from 0.001 - 100. The Mortgage Assistant does not support zero-interest loans.</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
@@ -660,6 +661,7 @@ All accounts must have valid entries to continue.
<object class="GtkEntry" id="amount_ent"> <object class="GtkEntry" id="amount_ent">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="editable">False</property>
<property name="invisible_char">&#x25CF;</property> <property name="invisible_char">&#x25CF;</property>
<property name="invisible_char_set">True</property> <property name="invisible_char_set">True</property>
<property name="primary_icon_activatable">False</property> <property name="primary_icon_activatable">False</property>

View File

@@ -9,8 +9,12 @@ SET (html_HEADERS
gnc-html-webkit-p.h gnc-html-webkit-p.h
) )
SET (SWIG_GNC_HTML_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnc-html.c) IF (BUILDING_FROM_VCS)
GNC_ADD_SWIG_COMMAND (${SWIG_GNC_HTML_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnc-html.i ${gncmod_html_HEADERS}) SET (SWIG_GNC_HTML_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnc-html.c)
GNC_ADD_SWIG_COMMAND (${SWIG_GNC_HTML_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnc-html.i ${gncmod_html_HEADERS})
ELSE()
SET (SWIG_GNC_HTML_C swig-gnc-html.c)
ENDIF()
SET (html_SOURCES SET (html_SOURCES
gncmod-html.c gncmod-html.c

View File

@@ -78,34 +78,32 @@ gnc_commodity * gnc_import_select_commodity(const char * cusip,
{ {
tmp_namespace = namespace_list->data; tmp_namespace = namespace_list->data;
DEBUG("Looking at namespace %s", tmp_namespace); DEBUG("Looking at namespace %s", tmp_namespace);
/*Nested loop*/
commodity_list = gnc_commodity_table_get_commodities(commodity_table, commodity_list = gnc_commodity_table_get_commodities(commodity_table,
tmp_namespace); tmp_namespace);
commodity_list = g_list_first(commodity_list); commodity_list = g_list_first(commodity_list);
while ( commodity_list != NULL && retval == NULL) while ( commodity_list != NULL && retval == NULL)
{ {
const char* tmp_cusip = NULL;
tmp_commodity = commodity_list->data; tmp_commodity = commodity_list->data;
DEBUG("Looking at commodity %s", gnc_commodity_get_fullname(tmp_commodity)); DEBUG("Looking at commodity %s",
gnc_commodity_get_fullname(tmp_commodity));
if (gnc_commodity_get_cusip(tmp_commodity) != NULL && tmp_cusip = gnc_commodity_get_cusip(tmp_commodity);
cusip != NULL && if (tmp_cusip != NULL && cusip != NULL)
strncmp(gnc_commodity_get_cusip(tmp_commodity), cusip, strlen(cusip)) == 0)
{ {
retval = tmp_commodity; int len = strlen(cusip) > strlen(tmp_cusip) ? strlen(cusip) :
DEBUG("Commodity %s%s", gnc_commodity_get_fullname(retval), " matches."); strlen(tmp_cusip);
if (strncmp(tmp_cusip, cusip, len) == 0)
{
retval = tmp_commodity;
DEBUG("Commodity %s%s",
gnc_commodity_get_fullname(retval), " matches.");
}
} }
commodity_list = g_list_next(commodity_list); commodity_list = g_list_next(commodity_list);
} }
/*End nested loop*/
namespace_list = g_list_next(namespace_list); namespace_list = g_list_next(namespace_list);
} }
g_list_free(commodity_list); g_list_free(commodity_list);
g_list_free(namespace_list); g_list_free(namespace_list);

View File

@@ -325,7 +325,28 @@ static Account *gnc_ofx_new_account(const char* name,
g_list_free(valid_types); g_list_free(valid_types);
return result; return result;
} }
/* LibOFX has a daylight time handling bug,
* https://sourceforge.net/p/libofx/bugs/39/, which causes it to adjust the
* timestamp for daylight time even when daylight time is not in
* effect. HAvE_OFX_BUG_39 reflects the result of checking for this bug during
* configuration, and fix_ofx_bug_39() corrects for it.
*/
static time64
fix_ofx_bug_39 (time64 t)
{
#if HAVE_OFX_BUG_39
struct tm stm;
gnc_localtime_r(&t, &stm);
if (!stm.tm_isdst)
{
time64 new_t;
stm.tm_isdst = 1;
new_t = gnc_mktime(&stm);
t += t - new_t;
}
#endif
return t;
}
int ofx_proc_transaction_cb(struct OfxTransactionData data, void * transaction_user_data) int ofx_proc_transaction_cb(struct OfxTransactionData data, void * transaction_user_data)
{ {
@@ -386,11 +407,13 @@ int ofx_proc_transaction_cb(struct OfxTransactionData data, void * transaction_u
if (data.date_posted_valid && (data.date_posted != 0)) if (data.date_posted_valid && (data.date_posted != 0))
{ {
/* The hopeful case: We have a posted_date */ /* The hopeful case: We have a posted_date */
data.date_posted = fix_ofx_bug_39 (data.date_posted);
xaccTransSetDatePostedSecsNormalized(transaction, data.date_posted); xaccTransSetDatePostedSecsNormalized(transaction, data.date_posted);
} }
else if (data.date_initiated_valid && (data.date_initiated != 0)) else if (data.date_initiated_valid && (data.date_initiated != 0))
{ {
/* No posted date? Maybe we have an initiated_date */ /* No posted date? Maybe we have an initiated_date */
data.date_initiated = fix_ofx_bug_39 (data.date_initiated);
xaccTransSetDatePostedSecsNormalized(transaction, data.date_initiated); xaccTransSetDatePostedSecsNormalized(transaction, data.date_initiated);
} }
else else

View File

@@ -0,0 +1,103 @@
IF (BUILDING_FROM_VCS)
SET(SWIG_FILES ${CMAKE_CURRENT_SOURCE_DIR}/gnucash_core.i ${CMAKE_CURRENT_SOURCE_DIR}/timespec.i)
SET(GNUCASH_CORE_C_INCLUDES
${CMAKE_BINARY_DIR}/src/config.h
${CMAKE_SOURCE_DIR}/src/libqof/qof/qofsession.h
${CMAKE_SOURCE_DIR}/src/libqof/qof/qofbook.h
${CMAKE_SOURCE_DIR}/src/libqof/qof/qofbackend.h
${CMAKE_SOURCE_DIR}/src/libqof/qof/qoflog.h
${CMAKE_SOURCE_DIR}/src/libqof/qof/qofutil.h
${CMAKE_SOURCE_DIR}/src/libqof/qof/qofid.h
${CMAKE_SOURCE_DIR}/src/libqof/qof/guid.h
${CMAKE_SOURCE_DIR}/src/gnc-module/gnc-module.h
${CMAKE_SOURCE_DIR}/src/engine/gnc-engine.h
${CMAKE_SOURCE_DIR}/src/engine/Transaction.h
${CMAKE_SOURCE_DIR}/src/engine/Split.h
${CMAKE_SOURCE_DIR}/src/engine/Account.h
${CMAKE_SOURCE_DIR}/src/engine/gnc-commodity.h
${CMAKE_SOURCE_DIR}/src/engine/gnc-lot.h
${CMAKE_SOURCE_DIR}/src/libqof/qof/gnc-numeric.h
${CMAKE_SOURCE_DIR}/src/engine/gncCustomer.h
${CMAKE_SOURCE_DIR}/src/engine/gncEmployee.h
${CMAKE_SOURCE_DIR}/src/engine/gncVendor.h
${CMAKE_SOURCE_DIR}/src/engine/gncAddress.h
${CMAKE_SOURCE_DIR}/src/engine/gncBillTerm.h
${CMAKE_SOURCE_DIR}/src/engine/gncOwner.h
${CMAKE_SOURCE_DIR}/src/engine/gncInvoice.h
${CMAKE_SOURCE_DIR}/src/engine/gncJob.h
${CMAKE_SOURCE_DIR}/src/engine/gncEntry.h
${CMAKE_SOURCE_DIR}/src/engine/gncTaxTable.h
${CMAKE_SOURCE_DIR}/src/engine/gncIDSearch.h
${CMAKE_SOURCE_DIR}/src/engine/gnc-pricedb.h
${CMAKE_SOURCE_DIR}/src/app-utils/gnc-prefs-utils.h
)
SET (SWIG_GNUCASH_CORE_C ${CMAKE_CURRENT_BINARY_DIR}/gnucash_core.c)
GNC_ADD_SWIG_PYTHON_COMMAND (swig-gnucash-core ${SWIG_GNUCASH_CORE_C}
${SWIG_FILES}
${CMAKE_SOURCE_DIR}/src/base-typemaps.i
${CMAKE_SOURCE_DIR}/src/engine/engine-common.i
${GNUCASH_CORE_C_INCLUDES}
)
ELSE()
SET (SWIG_GNUCASH_CORE_C gnucash_core.c)
ENDIF()
IF(WITH_PYTHON)
SET(gnucash_core_c_INCLUDE_DIRS
${CMAKE_SOURCE_DIR}/src/libqof/qof
${CMAKE_SOURCE_DIR}/src
${CMAKE_SOURCE_DIR}/src/engine
${CMAKE_SOURCE_DIR}/src/gnome-utils
${CMAKE_SOURCE_DIR}/src/app-utils
${CMAKE_SOURCE_DIR}/src/gnc-module
${CMAKE_SOURCE_DIR}/src/gnome
${CMAKE_SOURCE_DIR}/src/core-utils
${CMAKE_SOURCE_DIR}/src/gnc-module
${GLIB_INCLUDE_DIRS}
${PYTHON_INCLUDE_DIRS}
)
ADD_LIBRARY(gnucash_core_c MODULE ${SWIG_GNUCASH_CORE_C})
TARGET_INCLUDE_DIRECTORIES(gnucash_core_c PRIVATE ${gnucash_core_c_INCLUDE_DIRS})
TARGET_LINK_LIBRARIES(gnucash_core_c gnc-qof gnc-module gncmod-engine gncmod-app-utils ${GLIB_LIBS} ${PYTHON_LIBRARIES})
SET_TARGET_PROPERTIES(gnucash_core_c PROPERTIES PREFIX "_")
TARGET_COMPILE_OPTIONS(gnucash_core_c PRIVATE -Wno-implicit -Wno-missing-prototypes -Wno-declaration-after-statement -Wno-missing-declarations)
ADD_EXECUTABLE(sqlite3test EXCLUDE_FROM_ALL sqlite3test.c ${SWIG_GNUCASH_CORE_C})
TARGET_LINK_LIBRARIES(sqlite3test gnc-qof gnc-module gncmod-engine gncmod-app-utils ${GLIB_LIBS} ${PYTHON_LIBRARIES})
TARGET_INCLUDE_DIRECTORIES(sqlite3test PRIVATE ${gnucash_core_c_INCLUDE_DIRS})
TARGET_COMPILE_OPTIONS(sqlite3test PRIVATE -Wno-implicit -Wno-missing-prototypes -Wno-declaration-after-statement -Wno-missing-declarations)
ADD_TEST(NAME sqlite3test COMMAND sqlite3test)
ADD_DEPENDENCIES(check sqlite3test)
# Determine where to install the python libraries.
EXECUTE_PROCESS(
COMMAND ${PYTHON_EXECUTABLE} -c "import sysconfig; print sysconfig.get_path('platlib', vars = { 'platbase' : '${CMAKE_INSTALL_PREFIX}' } )"
RESULT_VARIABLE PYTHON_SYSCONFIG_RESULT
OUTPUT_VARIABLE PYTHON_SYSCONFIG_OUTPUT
ERROR_VARIABLE PYTHON_SYSCONFIG_ERROR
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE
)
IF (PYTHON_SYSCONFIG_RESULT)
MESSAGE(SEND_ERROR "Could not determine Python site-package directory:\n${PYTHON_SYSCONFIG_ERROR}")
ENDIF()
INSTALL(TARGETS gnucash_core_c
LIBRARY DESTINATION ${PYTHON_SYSCONFIG_OUTPUT}/gnucash
ARCHIVE DESTINATION ${PYTHON_SYSCONFIG_OUTPUT}/gnucash
)
INSTALL(FILES __init__.py function_class.py gnucash_business.py gnucash_core.py
${CMAKE_CURRENT_BINARY_DIR}/gnucash_core_c.py
DESTINATION ${PYTHON_SYSCONFIG_OUTPUT}/gnucash
)
ENDIF()

View File

@@ -62,6 +62,7 @@
#include "Split.h" #include "Split.h"
#include "Account.h" #include "Account.h"
#include "gnc-commodity.h" #include "gnc-commodity.h"
#include "gnc-environment.h"
#include "gnc-lot.h" #include "gnc-lot.h"
#include "gnc-numeric.h" #include "gnc-numeric.h"
#include "gncCustomer.h" #include "gncCustomer.h"

View File

@@ -710,7 +710,15 @@ gnc_bi_import_create_bis (GtkListStore * store, QofBook * book,
g_date_free (date); g_date_free (date);
} }
timespecFromTime64 (&today, gnc_time (NULL)); // set today to the current date timespecFromTime64 (&today, gnc_time (NULL)); // set today to the current date
gncEntrySetDateEntered (entry, today); if (strlen (date_opened) != 0) // If a date is specified in CSV
{
qof_scan_date (date_opened, &day, &month, &year); // FIXME: Must check for the return value of qof_scan_date!
gncEntrySetDate(entry, gnc_dmy2timespec (day, month, year));
}
else
{
gncEntrySetDateEntered(entry, today);
}
// Remove escaped quotes // Remove escaped quotes
desc = un_escape(desc); desc = un_escape(desc);
notes = un_escape(notes); notes = un_escape(notes);

17
src/python/CMakeLists.txt Normal file
View File

@@ -0,0 +1,17 @@
# handle pycons directory
SET(gncmod_python_SOURCES gncmod-python.c)
ADD_LIBRARY(gncmod-python ${gncmod_python_SOURCES})
TARGET_LINK_LIBRARIES(gncmod-python gnc-module gnc-core-utils-python gncmod-app-utils-python
${PYTHON_LIBRARIES} ${GLIB_LIBS}) # ${PYTHON_EXTRA_LIBS}
TARGET_INCLUDE_DIRECTORIES(gncmod-python
PRIVATE ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/core_utils ${CMAKE_SOURCE_DIR}/gnc-module ${PYTHON_INCLUDE_DIR})
TARGET_COMPILE_OPTIONS(gncmod-python PRIVATE -DG_LOG_DOMAIN=\"gnc.python\")
INSTALL(TARGETS gncmod-python
LIBRARY DESTINATION lib/gnucash
ARCHIVE DESTINATION lib/gnucash
RUNTIME DESTINATION bin
)
INSTALL(FILES init.py DESTINATION share/python)

View File

@@ -49,7 +49,7 @@ sub check_modules {
sub report { sub report {
my($itemname, $qh, $verbose) = @_; my($itemname, $qh, $verbose) = @_;
my ($symbol, $date, $currency, $last, $nav, $price, $timezone, $keyname); my ($symbol, $date, $currency, $last, $nav, $price, $timezone, $keyname);
my($gccanuse); my($gccanuse, $gcshoulduse) = (1, 1);
# Sanity check returned results # Sanity check returned results
if ((keys %$qh) < 1) { if ((keys %$qh) < 1) {
@@ -76,7 +76,6 @@ sub report {
} }
# Parse the quote fields and put warnings where necessary. # Parse the quote fields and put warnings where necessary.
$gccanuse = 1;
if (defined($$qh{$itemname, "symbol"})) { if (defined($$qh{$itemname, "symbol"})) {
$symbol = $$qh{$itemname, "symbol"}; $symbol = $$qh{$itemname, "symbol"};
} else { } else {
@@ -87,7 +86,7 @@ sub report {
$date = $$qh{$itemname, "date"}; $date = $$qh{$itemname, "date"};
} else { } else {
$date = "** missing **"; $date = "** missing **";
$gccanuse = 0; $gcshoulduse = 0;
} }
if (defined($$qh{$itemname, "currency"})) { if (defined($$qh{$itemname, "currency"})) {
$currency = $$qh{$itemname, "currency"}; $currency = $$qh{$itemname, "currency"};
@@ -116,7 +115,7 @@ sub report {
# Dump gnucash recognized fields # Dump gnucash recognized fields
printf "Finance::Quote fields Gnucash uses:\n"; printf "Finance::Quote fields Gnucash uses:\n";
printf " symbol: %-20s <=== required\n", $symbol; printf " symbol: %-20s <=== required\n", $symbol;
printf " date: %-20s <=== required\n", $date; printf " date: %-20s <=== recommended\n", $date;
printf " currency: %-20s <=== required\n", $currency; printf " currency: %-20s <=== required\n", $currency;
printf " last: %-20s <=\\ \n", $last; printf " last: %-20s <=\\ \n", $last;
printf " nav: %-20s <=== one of these\n", $nav; printf " nav: %-20s <=== one of these\n", $nav;
@@ -125,9 +124,11 @@ sub report {
# Report failure # Report failure
if ($gccanuse == 0) { if ($gccanuse == 0) {
printf "\n** This stock quote cannot be used by gnucash!!\n\n"; printf "\n** This stock quote cannot be used by GnuCash!\n\n";
} elsif ($gcshoulduse == 0) {
printf "\n** This quote will have today's date, which might be incorrect.\n";
printf " GnuCash will use it, but you might prefer that it doesn't.\n\n";
} }
# Dump all fields if requested # Dump all fields if requested
if ($verbose) { if ($verbose) {
printf "\nAll fields returned by Finance::Quote for stock $itemname\n\n"; printf "\nAll fields returned by Finance::Quote for stock $itemname\n\n";

View File

@@ -54,6 +54,7 @@ GUILE_COMPILE_ENV = \
--gnc-module-dir ${top_builddir}/src/html \ --gnc-module-dir ${top_builddir}/src/html \
--gnc-module-dir ${top_builddir}/src/report/report-system \ --gnc-module-dir ${top_builddir}/src/report/report-system \
--gnc-module-dir ${top_builddir}/src/report/standard-reports \ --gnc-module-dir ${top_builddir}/src/report/standard-reports \
--gnc-module-dir ${top_builddir}/src/report/business-reports \
--guile-load-dir ${top_builddir}/src/app-utils \ --guile-load-dir ${top_builddir}/src/app-utils \
--guile-load-dir ${top_builddir}/src/core-utils \ --guile-load-dir ${top_builddir}/src/core-utils \
--guile-load-dir ${top_builddir}/src/engine \ --guile-load-dir ${top_builddir}/src/engine \
@@ -61,6 +62,7 @@ GUILE_COMPILE_ENV = \
--guile-load-dir ${top_builddir}/src/gnome-utils \ --guile-load-dir ${top_builddir}/src/gnome-utils \
--guile-load-dir ${top_builddir}/src/report/report-system \ --guile-load-dir ${top_builddir}/src/report/report-system \
--guile-load-dir ${top_builddir}/src/report/standard-reports \ --guile-load-dir ${top_builddir}/src/report/standard-reports \
--guile-load-dir ${top_builddir}/src/report/business-reports \
--guile-load-dir ${top_builddir}/src/scm \ --guile-load-dir ${top_builddir}/src/scm \
--library-dir ${top_builddir}/src/engine \ --library-dir ${top_builddir}/src/engine \
--library-dir ${top_builddir}/src/libqof/qof \ --library-dir ${top_builddir}/src/libqof/qof \
@@ -71,7 +73,8 @@ GUILE_COMPILE_ENV = \
--library-dir ${top_builddir}/src/backend/sql \ --library-dir ${top_builddir}/src/backend/sql \
--library-dir ${top_builddir}/src/html \ --library-dir ${top_builddir}/src/html \
--library-dir ${top_builddir}/src/gnc-module \ --library-dir ${top_builddir}/src/gnc-module \
--library-dir ${top_builddir}/src/report/report-system --library-dir ${top_builddir}/src/report/report-system \
--library-dir ${top_builddir}/src/report/business-reports
%.go : %.scm .scm-links $(pkglib_LTLIBRARIES) %.go : %.scm .scm-links $(pkglib_LTLIBRARIES)

View File

@@ -58,6 +58,7 @@ GUILE_COMPILE_ENV = \
--gnc-module-dir ${top_builddir}/src/gnome-utils \ --gnc-module-dir ${top_builddir}/src/gnome-utils \
--gnc-module-dir ${top_builddir}/src/html \ --gnc-module-dir ${top_builddir}/src/html \
--gnc-module-dir ${top_builddir}/src/report/report-system \ --gnc-module-dir ${top_builddir}/src/report/report-system \
--gnc-module-dir ${top_builddir}/src/report/locale-specific/us \
--gnc-module-dir ${top_builddir}/src/tax/us \ --gnc-module-dir ${top_builddir}/src/tax/us \
--guile-load-dir ${top_builddir}/src/app-utils \ --guile-load-dir ${top_builddir}/src/app-utils \
--guile-load-dir ${top_builddir}/src/core-utils \ --guile-load-dir ${top_builddir}/src/core-utils \
@@ -65,6 +66,7 @@ GUILE_COMPILE_ENV = \
--guile-load-dir ${top_builddir}/src/gnc-module \ --guile-load-dir ${top_builddir}/src/gnc-module \
--guile-load-dir ${top_builddir}/src/gnome-utils \ --guile-load-dir ${top_builddir}/src/gnome-utils \
--guile-load-dir ${top_builddir}/src/report/report-system \ --guile-load-dir ${top_builddir}/src/report/report-system \
--guile-load-dir ${top_builddir}/src/report/locale-specific/us \
--guile-load-dir ${top_builddir}/src/scm \ --guile-load-dir ${top_builddir}/src/scm \
--guile-load-dir ${top_builddir}/src/tax/us \ --guile-load-dir ${top_builddir}/src/tax/us \
--library-dir ${top_builddir}/src/engine \ --library-dir ${top_builddir}/src/engine \
@@ -76,7 +78,8 @@ GUILE_COMPILE_ENV = \
--library-dir ${top_builddir}/src/backend/xml \ --library-dir ${top_builddir}/src/backend/xml \
--library-dir ${top_builddir}/src/backend/sql \ --library-dir ${top_builddir}/src/backend/sql \
--library-dir ${top_builddir}/src/html \ --library-dir ${top_builddir}/src/html \
--library-dir ${top_builddir}/src/report/report-system --library-dir ${top_builddir}/src/report/report-system \
--library-dir ${top_builddir}/src/report/locale-specific/us
%.go : %.scm .scm-links $(pkglib_LTLIBRARIES) %.go : %.scm .scm-links $(pkglib_LTLIBRARIES)
GNC_UNINSTALLED=yes \ GNC_UNINSTALLED=yes \

View File

@@ -8,8 +8,12 @@ SET (report_gnome_HEADERS
window-report.h window-report.h
) )
SET (SWIG_REPORT_GNOME_C ${CMAKE_CURRENT_BINARY_DIR}/swig-report-gnome.c) IF (BUILDING_FROM_VCS)
GNC_ADD_SWIG_COMMAND (${SWIG_REPORT_GNOME_C} ${CMAKE_CURRENT_SOURCE_DIR}/report-gnome.i ${report_gnome_HEADERS}) SET (SWIG_REPORT_GNOME_C ${CMAKE_CURRENT_BINARY_DIR}/swig-report-gnome.c)
GNC_ADD_SWIG_COMMAND (${SWIG_REPORT_GNOME_C} ${CMAKE_CURRENT_SOURCE_DIR}/report-gnome.i ${report_gnome_HEADERS})
ELSE()
SET (SWIG_REPORT_GNOME_C swig-report-gnome.c)
ENDIF()
SET (report_gnome_SOURCES SET (report_gnome_SOURCES
${SWIG_REPORT_GNOME_C} ${SWIG_REPORT_GNOME_C}

View File

@@ -4,8 +4,13 @@ SET (report_system_HEADERS
gnc-report.h gnc-report.h
) )
SET (SWIG_REPORT_SYSTEM_C ${CMAKE_CURRENT_BINARY_DIR}/swig-report-system.c) IF (BUILDING_FROM_VCS)
GNC_ADD_SWIG_COMMAND (${SWIG_REPORT_SYSTEM_C} ${CMAKE_CURRENT_SOURCE_DIR}/report-system.i ${report_system_HEADERS}) SET (SWIG_REPORT_SYSTEM_C ${CMAKE_CURRENT_BINARY_DIR}/swig-report-system.c)
GNC_ADD_SWIG_COMMAND (${SWIG_REPORT_SYSTEM_C} ${CMAKE_CURRENT_SOURCE_DIR}/report-system.i ${report_system_HEADERS})
ELSE()
SET (SWIG_REPORT_SYSTEM_C swig-report-system.c)
ENDIF()
SET (report_system_SOURCES SET (report_system_SOURCES
${SWIG_REPORT_SYSTEM_C} ${SWIG_REPORT_SYSTEM_C}

View File

@@ -119,6 +119,7 @@ GUILE_COMPILE_ENV = \
--guile-load-dir ${top_builddir}/src/gnc-module \ --guile-load-dir ${top_builddir}/src/gnc-module \
--guile-load-dir ${top_builddir}/src/gnome-utils \ --guile-load-dir ${top_builddir}/src/gnome-utils \
--guile-load-dir ${top_builddir}/src/scm \ --guile-load-dir ${top_builddir}/src/scm \
--guile-load-dir ${top_builddir}/src/report/report-system \
--library-dir ${top_builddir}/src/libqof/qof \ --library-dir ${top_builddir}/src/libqof/qof \
--library-dir ${top_builddir}/src/engine \ --library-dir ${top_builddir}/src/engine \
--library-dir ${top_builddir}/src/app-utils \ --library-dir ${top_builddir}/src/app-utils \

View File

@@ -81,12 +81,14 @@ GUILE_COMPILE_ENV = \
--gnc-module-dir ${top_builddir}/src/gnome-utils \ --gnc-module-dir ${top_builddir}/src/gnome-utils \
--gnc-module-dir ${top_builddir}/src/html \ --gnc-module-dir ${top_builddir}/src/html \
--gnc-module-dir ${top_builddir}/src/report/report-system \ --gnc-module-dir ${top_builddir}/src/report/report-system \
--gnc-module-dir ${top_builddir}/src/report/standard-reports \
--guile-load-dir ${top_builddir}/src/app-utils \ --guile-load-dir ${top_builddir}/src/app-utils \
--guile-load-dir ${top_builddir}/src/core-utils \ --guile-load-dir ${top_builddir}/src/core-utils \
--guile-load-dir ${top_builddir}/src/engine \ --guile-load-dir ${top_builddir}/src/engine \
--guile-load-dir ${top_builddir}/src/gnc-module \ --guile-load-dir ${top_builddir}/src/gnc-module \
--guile-load-dir ${top_builddir}/src/gnome-utils \ --guile-load-dir ${top_builddir}/src/gnome-utils \
--guile-load-dir ${top_builddir}/src/report/report-system \ --guile-load-dir ${top_builddir}/src/report/report-system \
--guile-load-dir ${top_builddir}/src/report/standard-reports \
--guile-load-dir ${top_builddir}/src/scm \ --guile-load-dir ${top_builddir}/src/scm \
--library-dir ${top_builddir}/src/libqof/qof \ --library-dir ${top_builddir}/src/libqof/qof \
--library-dir ${top_builddir}/src/engine \ --library-dir ${top_builddir}/src/engine \
@@ -97,7 +99,8 @@ GUILE_COMPILE_ENV = \
--library-dir ${top_builddir}/src/backend/xml \ --library-dir ${top_builddir}/src/backend/xml \
--library-dir ${top_builddir}/src/backend/sql \ --library-dir ${top_builddir}/src/backend/sql \
--library-dir ${top_builddir}/src/html \ --library-dir ${top_builddir}/src/html \
--library-dir ${top_builddir}/src/report/report-system --library-dir ${top_builddir}/src/report/report-system \
--library-dir ${top_builddir}/src/report/standard-reports
%.go : %.scm .scm-links $(pkglib_LTLIBRARIES) %.go : %.scm .scm-links $(pkglib_LTLIBRARIES)
GNC_UNINSTALLED=yes \ GNC_UNINSTALLED=yes \

View File

@@ -69,12 +69,14 @@ GUILE_COMPILE_ENV = \
--gnc-module-dir ${top_builddir}/src/html \ --gnc-module-dir ${top_builddir}/src/html \
--gnc-module-dir ${top_builddir}/src/gnome-utils \ --gnc-module-dir ${top_builddir}/src/gnome-utils \
--gnc-module-dir ${top_builddir}/src/report/report-system \ --gnc-module-dir ${top_builddir}/src/report/report-system \
--gnc-module-dir ${top_builddir}/src/report/stylesheets \
--guile-load-dir ${top_builddir}/src/app-utils \ --guile-load-dir ${top_builddir}/src/app-utils \
--guile-load-dir ${top_builddir}/src/core-utils \ --guile-load-dir ${top_builddir}/src/core-utils \
--guile-load-dir ${top_builddir}/src/engine \ --guile-load-dir ${top_builddir}/src/engine \
--guile-load-dir ${top_builddir}/src/gnc-module \ --guile-load-dir ${top_builddir}/src/gnc-module \
--guile-load-dir ${top_builddir}/src/gnome-utils \ --guile-load-dir ${top_builddir}/src/gnome-utils \
--guile-load-dir ${top_builddir}/src/report/report-system \ --guile-load-dir ${top_builddir}/src/report/report-system \
--guile-load-dir ${top_builddir}/src/report/stylesheets \
--guile-load-dir ${top_builddir}/src/scm \ --guile-load-dir ${top_builddir}/src/scm \
--library-dir ${top_builddir}/src/libqof/qof \ --library-dir ${top_builddir}/src/libqof/qof \
--library-dir ${top_builddir}/src/engine \ --library-dir ${top_builddir}/src/engine \
@@ -85,7 +87,8 @@ GUILE_COMPILE_ENV = \
--library-dir ${top_builddir}/src/backend/xml \ --library-dir ${top_builddir}/src/backend/xml \
--library-dir ${top_builddir}/src/backend/sql \ --library-dir ${top_builddir}/src/backend/sql \
--library-dir ${top_builddir}/src/html \ --library-dir ${top_builddir}/src/html \
--library-dir ${top_builddir}/src/report/report-system --library-dir ${top_builddir}/src/report/report-system \
--library-dir ${top_builddir}/src/report/stylesheets
%.go : %.scm .scm-links $(pkglib_LTLIBRARIES) %.go : %.scm .scm-links $(pkglib_LTLIBRARIES)
GNC_UNINSTALLED=yes \ GNC_UNINSTALLED=yes \

View File

@@ -53,12 +53,14 @@ GUILE_COMPILE_ENV = \
--gnc-module-dir ${top_builddir}/src/gnome-utils \ --gnc-module-dir ${top_builddir}/src/gnome-utils \
--gnc-module-dir ${top_builddir}/src/html \ --gnc-module-dir ${top_builddir}/src/html \
--gnc-module-dir ${top_builddir}/src/report/report-system \ --gnc-module-dir ${top_builddir}/src/report/report-system \
--gnc-module-dir ${top_builddir}/src/report/utility-reports \
--guile-load-dir ${top_builddir}/src/app-utils \ --guile-load-dir ${top_builddir}/src/app-utils \
--guile-load-dir ${top_builddir}/src/core-utils \ --guile-load-dir ${top_builddir}/src/core-utils \
--guile-load-dir ${top_builddir}/src/engine \ --guile-load-dir ${top_builddir}/src/engine \
--guile-load-dir ${top_builddir}/src/gnc-module \ --guile-load-dir ${top_builddir}/src/gnc-module \
--guile-load-dir ${top_builddir}/src/gnome-utils \ --guile-load-dir ${top_builddir}/src/gnome-utils \
--guile-load-dir ${top_builddir}/src/report/report-system \ --guile-load-dir ${top_builddir}/src/report/report-system \
--guile-load-dir ${top_builddir}/src/report/utility-reports \
--guile-load-dir ${top_builddir}/src/scm \ --guile-load-dir ${top_builddir}/src/scm \
--library-dir ${top_builddir}/src/engine \ --library-dir ${top_builddir}/src/engine \
--library-dir ${top_builddir}/src/libqof/qof \ --library-dir ${top_builddir}/src/libqof/qof \
@@ -69,7 +71,8 @@ GUILE_COMPILE_ENV = \
--library-dir ${top_builddir}/src/backend/xml \ --library-dir ${top_builddir}/src/backend/xml \
--library-dir ${top_builddir}/src/backend/sql \ --library-dir ${top_builddir}/src/backend/sql \
--library-dir ${top_builddir}/src/html \ --library-dir ${top_builddir}/src/html \
--library-dir ${top_builddir}/src/report/report-system --library-dir ${top_builddir}/src/report/report-system \
--library-dir ${top_builddir}/src/report/utility-reports
%.go : %.scm .scm-links $(pkglib_LTLIBRARIES) %.go : %.scm .scm-links $(pkglib_LTLIBRARIES)
GNC_UNINSTALLED=yes \ GNC_UNINSTALLED=yes \

View File

@@ -24,16 +24,28 @@ IF (UNIX)
TARGET_COMPILE_OPTIONS(test-core PRIVATE -fPIC) TARGET_COMPILE_OPTIONS(test-core PRIVATE -fPIC)
ENDIF() ENDIF()
SET (SWIG_UNITTEST_SUPPORT_GUILE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-unittest-support-guile.c) IF (BUILDING_FROM_VCS)
GNC_ADD_SWIG_COMMAND (${SWIG_UNITTEST_SUPPORT_GUILE_C} SET (SWIG_UNITTEST_SUPPORT_GUILE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-unittest-support-guile.c)
${CMAKE_CURRENT_SOURCE_DIR}/unittest-support.i ${test_core_HEADERS}) GNC_ADD_SWIG_COMMAND (${SWIG_UNITTEST_SUPPORT_GUILE_C}
${CMAKE_CURRENT_SOURCE_DIR}/unittest-support.i ${test_core_HEADERS})
SET (SWIG_UNITTEST_SUPPORT_PYTHON_C ${CMAKE_CURRENT_BINARY_DIR}/swig-unittest-support-python.c)
GNC_ADD_SWIG_PYTHON_COMMAND (swig-unittest-support-python ${SWIG_UNITTEST_SUPPORT_PYTHON_C} ${CMAKE_CURRENT_SOURCE_DIR}/unittest-support.i)
ELSE()
SET (SWIG_UNITTEST_SUPPORT_GUILE_C swig-unittest-support-guile.c)
SET (SWIG_UNITTEST_SUPPORT_PYTHON_C swig-unittest-support-python.c)
ENDIF()
SET(test_core_guile_SOURCES ${SWIG_UNITTEST_SUPPORT_GUILE_C}) ADD_LIBRARY(test-core-guile ${SWIG_UNITTEST_SUPPORT_GUILE_C})
ADD_LIBRARY(test-core-guile ${test_core_guile_SOURCES})
TARGET_LINK_LIBRARIES(test-core-guile test-core ${GUILE_LDFLAGS} ${GLIB2_LDFLAGS}) TARGET_LINK_LIBRARIES(test-core-guile test-core ${GUILE_LDFLAGS} ${GLIB2_LDFLAGS})
IF (WITH_PYTHON)
ADD_LIBRARY(unittest_support MODULE ${SWIG_UNITTEST_SUPPORT_PYTHON_C})
TARGET_LINK_LIBRARIES(unittest_support test-core ${PYTHON_LIBRARIES})
TARGET_INCLUDE_DIRECTORIES(unittest_support PRIVATE ${PYTHON_INCLUDE_DIRS})
SET_TARGET_PROPERTIES(unittest_support PROPERTIES PREFIX "_")
ENDIF()
SET(test_core_SCHEME unittest-support.scm) SET(test_core_SCHEME unittest-support.scm)
SET(GUILE_OUTPUT_DIR gnucash) SET(GUILE_OUTPUT_DIR gnucash)