[Gnucash-changes] Rewrite this module's book-opened-hook into C.

David Hampton hampton at cvs.gnucash.org
Thu Jul 7 20:03:44 EDT 2005


Log Message:
-----------
Rewrite this module's book-opened-hook into C.

Tags:
----
gnucash-gnome2-dev

Modified Files:
--------------
    gnucash/src/import-export/binary-import:
        Makefile.am
        druid-commodity.c
        druid-commodity.h
        gncmod-binary-import.c

Removed Files:
-------------
    gnucash/src/import-export/binary-import:
        binary-import.scm
        gw-binary-import-spec.scm

Revision Data
-------------
Index: druid-commodity.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/import-export/binary-import/druid-commodity.h,v
retrieving revision 1.2
retrieving revision 1.2.4.1
diff -Lsrc/import-export/binary-import/druid-commodity.h -Lsrc/import-export/binary-import/druid-commodity.h -u -r1.2 -r1.2.4.1
--- src/import-export/binary-import/druid-commodity.h
+++ src/import-export/binary-import/druid-commodity.h
@@ -32,6 +32,7 @@
 
 #include "gnc-commodity.h"
 #include "gnc-engine.h"
+#include "qofsession.h"
 
 typedef struct _commoditydruid CommodityDruid;
 
@@ -42,5 +43,8 @@
 /* invoke import druid modally */
 void            gnc_import_legacy_commodities(const char * filename);
 
+/* book-opened callback hook */
+void gnc_import_commodities(QofSession *session, gpointer data);
+
 #endif
 
Index: druid-commodity.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/import-export/binary-import/druid-commodity.c,v
retrieving revision 1.8.4.6
retrieving revision 1.8.4.7
diff -Lsrc/import-export/binary-import/druid-commodity.c -Lsrc/import-export/binary-import/druid-commodity.c -u -r1.8.4.6 -r1.8.4.7
--- src/import-export/binary-import/druid-commodity.c
+++ src/import-export/binary-import/druid-commodity.c
@@ -42,6 +42,7 @@
 #include "gnc-file.h"
 #include "gnc-gui-query.h"
 #include "gnc-pricedb-p.h"
+#include "gnc-session.h"
 #include "gnc-ui-util.h"
 #include "gnc-ui.h"
 
@@ -507,3 +508,12 @@
   /* destroy the dialog */
   gnc_ui_commodity_druid_destroy(cd);
 }
+
+
+void gnc_import_commodities(QofSession *session, gpointer unused)
+{
+  const gchar *book_url;
+
+  book_url = gnc_session_get_url(session);
+  gnc_import_legacy_commodities(book_url);
+}
Index: Makefile.am
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/import-export/binary-import/Makefile.am,v
retrieving revision 1.15.4.3
retrieving revision 1.15.4.4
diff -Lsrc/import-export/binary-import/Makefile.am -Lsrc/import-export/binary-import/Makefile.am -u -r1.15.4.3 -r1.15.4.4
--- src/import-export/binary-import/Makefile.am
+++ src/import-export/binary-import/Makefile.am
@@ -1,7 +1,7 @@
 SUBDIRS = . test
 PWD := $(shell pwd)
 
-pkglib_LTLIBRARIES = libgncmod-binary-import.la libgw-binary-import.la
+pkglib_LTLIBRARIES = libgncmod-binary-import.la
 
 AM_CFLAGS = \
   -I${top_srcdir}/src/gnc-module \
@@ -13,7 +13,6 @@
   -I${top_srcdir}/src/gnome \
   ${GUILE_INCS} \
   ${GLADE_CFLAGS} \
-  ${G_WRAP_COMPILE_ARGS} \
   ${GLIB_CFLAGS} \
   ${GNOME_CFLAGS}
 
@@ -27,8 +26,7 @@
 
 gncincludedir = ${GNC_INCLUDE_DIR}
 gncinclude_HEADERS = \
-  druid-commodity.h \
-  gw-binary-import.h
+  druid-commodity.h
 
 libgncmod_binary_import_la_LDFLAGS = -module
 
@@ -44,53 +42,9 @@
   ${GNOME_LIBS} \
   ${GLIB_LIBS}
 
-libgw_binary_import_la_SOURCES = gw-binary-import.c
-libgw_binary_import_la_LDFLAGS = -module
-libgw_binary_import_la_LIBADD  = libgncmod-binary-import.la
-
-gncmoddir = ${GNC_SHAREDIR}/guile-modules/gnucash/import-export
-gncmod_DATA = binary-import.scm 
-
-gwmoddir = ${GNC_GWRAP_LIBDIR}
-gwmod_DATA = gw-binary-import-spec.scm gw-binary-import.scm
-
-noinst_DATA = .scm-links
-
 gladedir = $(GNC_GLADE_DIR)
 glade_DATA = binary-import.glade
 
 EXTRA_DIST = \
   .cvsignore \
-  ${gncmod_DATA} \
-  ${gwmod_DATA} \
   ${glade_DATA}
-
-if GNUCASH_SEPARATE_BUILDDIR
-#Only needed when srcdir and builddir are different
-SCM_FILE_LINKS = gw-binary-import-spec.scm
-endif
-
-.scm-links: 
-	rm -f import-export gnucash g-wrapped
-	ln -sf . import-export
-	ln -sf . gnucash 
-	ln -sf . g-wrapped 
-if GNUCASH_SEPARATE_BUILDDIR
-	for X in ${SCM_FILE_LINKS} ; do \
-	  ln -sf ${srcdir}/$$X . ; \
-	done
-endif
-	touch .scm-links
-
-gw-binary-import.scm gw-binary-import.c gw-binary-import.h: \
-  .scm-links gw-binary-import-spec.scm ${top_builddir}/config.status
-	FLAVOR=gnome guile -c \
-	 "(set! %load-path (cons \"${G_WRAP_MODULE_DIR}\" %load-path)) \
-	  (set! %load-path (cons \"${PWD}\" %load-path)) \
-	  (primitive-load \"./gw-binary-import-spec.scm\") \
-	  (gw:generate-wrapset \"gw-binary-import\")"
-
-BUILT_SOURCES = gw-binary-import.scm gw-binary-import.c gw-binary-import.h
-DISTCLEANFILES = gnucash g-wrapped import-export .scm-links ${SCM_FILE_LINKS} \
-                 gw-binary-import.html
-
--- src/import-export/binary-import/binary-import.scm
+++ /dev/null
@@ -1,12 +0,0 @@
-
-(define-module (gnucash import-export binary-import))
-(use-modules (g-wrapped gw-binary-import))
-(use-modules (gnucash app-utils))
-(use-modules (gnucash gnc-module))
-(gnc:module-load "gnucash/engine" 0)
-
-(define (import-commodities session)
-  (let ((book-url (gnc:session-get-url session)))
-    (gnc:import-legacy-commodities book-url)))
-
-(gnc:hook-add-dangler gnc:*book-opened-hook* import-commodities)
Index: gncmod-binary-import.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/import-export/binary-import/gncmod-binary-import.c,v
retrieving revision 1.5.4.1
retrieving revision 1.5.4.2
diff -Lsrc/import-export/binary-import/gncmod-binary-import.c -Lsrc/import-export/binary-import/gncmod-binary-import.c -u -r1.5.4.1 -r1.5.4.2
--- src/import-export/binary-import/gncmod-binary-import.c
+++ src/import-export/binary-import/gncmod-binary-import.c
@@ -10,8 +10,10 @@
 #include <glib.h>
 #include <libguile.h>
 
+#include "gnc-hooks.h"
 #include "gnc-module.h"
 #include "gnc-module-api.h"
+#include "druid-commodity.h"
 
 /* version of the gnc module system interface we require */
 int libgncmod_binary_import_LTX_gnc_module_system_interface = 0;
@@ -38,14 +40,6 @@
   return g_strdup("Utilities importing GnuCash binary files");
 }
 
-static void
-lmod(char * mn) 
-{
-  char * form = g_strdup_printf("(use-modules %s)\n", mn);
-  scm_c_eval_string(form);
-  g_free(form);
-}
-
 int
 libgncmod_binary_import_LTX_gnc_module_init(int refcount) {
   /* load the engine (we depend on it) */
@@ -68,11 +62,9 @@
     return FALSE;
   }
 
-  /* publish g-wrapped bindings */
-  /* load the scheme code */
-  lmod("(g-wrapped gw-binary-import)");
-  lmod("(gnucash import-export binary-import)");
-
+  if (refcount == 0) {
+    gnc_hook_add_dangler(HOOK_BOOK_OPENED, (GFunc)gnc_import_commodities, NULL);
+  }
   return TRUE;
 }
 
--- src/import-export/binary-import/gw-binary-import-spec.scm
+++ /dev/null
@@ -1,29 +0,0 @@
-
-(define-module (g-wrapped gw-app-utils-spec))
-
-(debug-set! maxdepth 100000)
-(debug-set! stack    2000000)
-
-(use-modules (g-wrap))
-
-(use-modules (g-wrap gw-standard-spec))
-
-(let ((ws (gw:new-wrapset "gw-binary-import")))
-
-  (gw:wrapset-depends-on ws "gw-standard")
-
-  (gw:wrapset-set-guile-module! ws '(g-wrapped gw-binary-import))
-
-  (gw:wrapset-add-cs-declarations!
-   ws
-   (lambda (wrapset client-wrapset) 
-     "#include <druid-commodity.h>\n"))
-
-  (gw:wrap-function
-   ws
-   'gnc:import-legacy-commodities
-   '<gw:void>
-   "gnc_import_legacy_commodities"
-   '(((<gw:mchars> caller-owned const) filename))
-   "Launch the legacy-commodity import druid")
-)


More information about the gnucash-changes mailing list