[gimp-tiny-fu] Use tiny-fu instead of TinyScheme as the controlling program to run scripts.



commit 64159974faa5b38b7a335b4e32acaedce2161f4f
Author: Kevin Cozens <kcozens svn gnome org>
Date:   Fri Dec 2 20:26:32 2011 -0500

    Use tiny-fu instead of TinyScheme as the controlling program to run scripts.
    
    The original plan to run a Scheme script was to have GIMP start TinyScheme
    and TinyScheme would load tiny-fu as an extension. There were difficulties
    in going from Scheme to C to Scheme (initially to create wrapper functions
    for GIMP functions) so this approach has been abandoned in favour of the
    original method of going from C to Scheme to C to run Scheme scripts. Also
    updated dependencies to match those of GIMP. Don't use gtk+ 3.0 functions.

 Makefile.am                 |  6 +++---
 configure.in                | 15 ++++++++++++---
 ftx/Makefile.am             | 20 ++++++--------------
 tiny-fu/Makefile.am         | 36 ++++++++++++++++++++----------------
 tiny-fu/scheme-wrapper.c    |  2 +-
 tiny-fu/tiny-fu-console.c   |  8 ++++----
 tiny-fu/tiny-fu-interface.c |  4 ++--
 tiny-fu/tiny-fu-server.c    |  4 ++--
 tiny-fu/tiny-fu.c           | 44 +-------------------------------------------
 tinyscheme/Makefile.am      | 10 +++-------
 tinyscheme/scheme.c         | 37 -------------------------------------
 11 files changed, 54 insertions(+), 132 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index 89dbbea..a808c29 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -20,7 +20,7 @@ tinyfudir = $(GIMP_LIBDIR)/$(tinyfubase)
 
 tinyfuenvdir = $(GIMP_LIBDIR)/environ
 tinyfuinterpdir = $(GIMP_LIBDIR)/interpreters
-TINYSCHEME_BIN = $(tinyfudir)/tinyscheme
+TINYFU_BIN = $(tinyfudir)/tiny-fu
 
 tinyfuenvfile = $(tinyfuenvdir)/tiny-fu.env
 tinyfuinterpfile = $(tinyfuinterpdir)/tiny-fu.interp
@@ -32,8 +32,8 @@ install-env-file:
 
 install-interp-file:
        $(mkinstalldirs) '$(DESTDIR)$(tinyfuinterpdir)'
-       echo 'tinyscheme=$(TINYSCHEME_BIN)' > '$(DESTDIR)$(tinyfuinterpfile)'
-       echo ':TinyScheme:E::scm::tinyscheme:' >> '$(DESTDIR)$(tinyfuinterpfile)'
+       echo 'tiny-fu=$(TINYFU_BIN)' > '$(DESTDIR)$(tinyfuinterpfile)'
+       echo ':Tiny-Fu:E::scm::tiny-fu:' >> '$(DESTDIR)$(tinyfuinterpfile)'
 
 install-data-local: install-env-file install-interp-file
 
diff --git a/configure.in b/configure.in
index a102539..becabc2 100644
--- a/configure.in
+++ b/configure.in
@@ -19,9 +19,9 @@ m4_define([tiny_fu_stable],
           m4_if(m4_eval(plugin_minor_version % 2), [0], [yes], [no]))
 
 dnl required versions of other packages
-m4_define([glib_required_version], [2.12.3])
-m4_define([gtk_required_version], [2.10.13])
-m4_define([gimp_required_version], [2.4.0])
+m4_define([glib_required_version], [2.28.8])
+m4_define([gtk_required_version], [2.24.7])
+m4_define([gimp_required_version], [2.7.0])
 
 AC_INIT([plugin_name], [plugin_version])
 
@@ -227,6 +227,10 @@ AM_PATH_GLIB_2_0(glib_required_version, :,
 AM_PATH_GTK_2_0(gtk_required_version, :,
     AC_MSG_ERROR(Test for GTK+ failed. See the file 'INSTALL' for help.))
 
+GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
+GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
+AC_SUBST(GTK_CFLAGS)
+AC_SUBST(GTK_LIBS)
 
 dnl Check for bind_textdomain_codeset, including -lintl if GLib brings it in.
 gimp_save_LIBS=$LIBS
@@ -235,8 +239,13 @@ AC_CHECK_FUNCS(bind_textdomain_codeset)
 
 
 PKG_CHECK_MODULES(GIMP, gimp-2.0 >= gimp_required_version gimpui-2.0 >= gimp_required_version)
+
+GIMP_CFLAGS=`$PKG_CONFIG --cflags gimp-2.0`
+GIMP_LIBS=`$PKG_CONFIG --libs gimp-2.0`
+GIMPUI_LIBS=`$PKG_CONFIG --libs gimpui-2.0`
 AC_SUBST(GIMP_CFLAGS)
 AC_SUBST(GIMP_LIBS)
+AC_SUBST(GIMPUI_LIBS)
 
 
 ##################################
diff --git a/ftx/Makefile.am b/ftx/Makefile.am
index bc36c29..28e3d03 100644
--- a/ftx/Makefile.am
+++ b/ftx/Makefile.am
@@ -5,22 +5,14 @@ mwindows = -mwindows
 no_undefined = -no-undefined
 endif
 
-AM_CFLAGS = \
-    -DUSE_INTERFACE=1 \
-    -I$(top_srcdir)   \
-    $(GIMP_CFLAGS)
-
-ftx_ladir = $(GIMP_LIBDIR)/tiny-fu
+noinst_LIBRARIES = libftx.a
 
-ftx_la_LTLIBRARIES = ftx.la
-
-ftx_la_SOURCES = ftx.c ftx.h
+AM_CFLAGS = \
+    -DSTANDALONE=0     \
+    -DUSE_INTERFACE=1  \
+    $(GLIB_CFLAGS)
 
-ftx_la_LDFLAGS = \
-    -module          \
-    -avoid-version   \
-    $(no_undefined)  \
-    $(mwindows)
+libftx_a_SOURCES = ftx.c
 
 EXTRA_DIST = \
     LICENSE           \
diff --git a/tiny-fu/Makefile.am b/tiny-fu/Makefile.am
index 7ebc82b..d4cf50c 100644
--- a/tiny-fu/Makefile.am
+++ b/tiny-fu/Makefile.am
@@ -4,19 +4,34 @@ if OS_WIN32
 mwindows = -mwindows
 WINSOCK_LIBS = -lws2_32
 no_undefined = -no-undefined
+else
+libm = -lm
 endif
 
+libtinyscheme=-L../tinyscheme -ltinyscheme $(libm)
+libftx=-L../ftx -lftx
+
+
 AM_CFLAGS = \
     -DSTANDALONE=0     \
     -DUSE_INTERFACE=1  \
-    -I$(top_srcdir)    \
-    $(GIMP_CFLAGS)
+    $(GTK_CFLAGS)      \
+    $(GIMP_CFLAGS)     \
+    $(mwindows)
+
+LDADD = \
+    $(libtinyscheme)       \
+    $(libftx)              \
+    $(GTK_LIBS)            \
+    $(GIMP_LIBS)           \
+    $(GIMPUI_LIBS)         \
+    $(WINSOCK_LIBS)
 
-tiny_fu_ladir = $(GIMP_LIBDIR)/tiny-fu
+libexecdir = $(GIMP_LIBDIR)/tiny-fu
 
-tiny_fu_la_LTLIBRARIES = tiny_fu.la
+libexec_PROGRAMS = tiny-fu
 
-tiny_fu_la_SOURCES = \
+tiny_fu_SOURCES = \
     tiny-fu.c              \
     tiny-fu-console.c      \
     tiny-fu-console.h      \
@@ -41,14 +56,3 @@ tiny_fu_la_SOURCES = \
     tiny-fu-utils.h        \
     scheme-wrapper.c       \
     scheme-wrapper.h
-
-tiny_fu_la_LDFLAGS = \
-    -module          \
-    -avoid-version   \
-    $(no_undefined)  \
-    $(mwindows)
-
-tiny_fu_la_LIBADD = \
-    $(GIMP_LIBS)     \
-    $(WINSOCK_LIBS)  \
-    $(INTLLIBS)
diff --git a/tiny-fu/scheme-wrapper.c b/tiny-fu/scheme-wrapper.c
index c6112ee..ac2e8f9 100644
--- a/tiny-fu/scheme-wrapper.c
+++ b/tiny-fu/scheme-wrapper.c
@@ -28,7 +28,7 @@
 
 #include <gtk/gtk.h>
 
-#include "libgimp/gimp.h"
+#include <libgimp/gimp.h>
 
 #include "tinyscheme/scheme-private.h"
 #if USE_DL
diff --git a/tiny-fu/tiny-fu-console.c b/tiny-fu/tiny-fu-console.c
index db7b158..64ef543 100644
--- a/tiny-fu/tiny-fu-console.c
+++ b/tiny-fu/tiny-fu-console.c
@@ -22,8 +22,8 @@
 
 #include <glib/gstdio.h>
 
-#include "libgimp/gimp.h"
-#include "libgimp/gimpui.h"
+#include <libgimp/gimp.h>
+#include <libgimp/gimpui.h>
 
 #include <gdk/gdkkeysyms.h>
 
@@ -152,7 +152,7 @@ script_fu_console_interface (void)
                     &console);
 
   /*  The main vbox  */
-  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
+  vbox = gtk_vbox_new (FALSE, 12);
   gtk_container_set_border_width (GTK_CONTAINER (vbox), 12);
   gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (console.dialog))),
                       vbox, TRUE, TRUE, 0);
@@ -219,7 +219,7 @@ script_fu_console_interface (void)
   }
 
   /*  The current command  */
-  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+  hbox = gtk_hbox_new (FALSE, 6);
   gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
   gtk_widget_show (hbox);
 
diff --git a/tiny-fu/tiny-fu-interface.c b/tiny-fu/tiny-fu-interface.c
index bb6aa24..043a461 100644
--- a/tiny-fu/tiny-fu-interface.c
+++ b/tiny-fu/tiny-fu-interface.c
@@ -251,7 +251,7 @@ script_fu_interface (SFScript  *script,
 
   gtk_window_set_resizable (GTK_WINDOW (dialog), TRUE);
 
-  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
+  vbox = gtk_vbox_new (FALSE, 12);
   gtk_container_set_border_width (GTK_CONTAINER (vbox), 12);
   gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))),
                       vbox, TRUE, TRUE, 0);
@@ -561,7 +561,7 @@ script_fu_interface (SFScript  *script,
   g_object_unref (group);
 
   /* the script progress bar */
-  vbox2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
+  vbox2 = gtk_vbox_new (FALSE, 6);
   gtk_box_pack_end (GTK_BOX (vbox), vbox2, FALSE, FALSE, 0);
   gtk_widget_show (vbox2);
 
diff --git a/tiny-fu/tiny-fu-server.c b/tiny-fu/tiny-fu-server.c
index d22a3b2..1b68455 100644
--- a/tiny-fu/tiny-fu-server.c
+++ b/tiny-fu/tiny-fu-server.c
@@ -60,8 +60,8 @@ typedef short sa_family_t;  /* Not defined by winsock */
 
 #include <glib/gstdio.h>
 
-#include "libgimp/gimp.h"
-#include "libgimp/gimpui.h"
+#include <libgimp/gimp.h>
+#include <libgimp/gimpui.h>
 
 #include "tiny-fu-intl.h"
 
diff --git a/tiny-fu/tiny-fu.c b/tiny-fu/tiny-fu.c
index 9452068..a986ad8 100644
--- a/tiny-fu/tiny-fu.c
+++ b/tiny-fu/tiny-fu.c
@@ -48,8 +48,6 @@
 
 /* Declare local functions. */
 
-static pointer tiny_fu_main_init        (scheme *sc, pointer args);
-
 static void    script_fu_query          (void);
 static void    script_fu_run            (const gchar      *name,
                                          gint              nparams,
@@ -74,48 +72,8 @@ const GimpPlugInInfo PLUG_IN_INFO =
 };
 
 
-/* This routine is called to initialize the Tiny-Fu extension. */
-EXPORT void
-init_tiny_fu (scheme *sc)
-{
-    printf ("Loaded Tiny-Fu extension\n");
-
-    sc->vptr->scheme_define (sc, sc->global_env,
-                             sc->vptr->mk_symbol(sc,"tiny-fu-init"),
-                             sc->vptr->mk_foreign_func(sc, tiny_fu_main_init));
-}
-
-/* The parameters passed to TinyScheme can be found in *args*. */
-pointer
-tiny_fu_main_init (scheme *sc, pointer args)
-{
-    int    argc;
-    char **argv;
-    int    i;
-
-    args = sc->vptr->pair_car (args);   /* List is passed in a list */
-    argc = sc->vptr->list_length (sc, args);
-
-    argv = g_new (char *, argc);
-
-    for (i = 0; i < argc; ++i)
-       {
-         argv[i] = g_strdup (sc->vptr->string_value (sc->vptr->pair_car (args)));
-
-         args = sc->vptr->pair_cdr (args);
-       }
-
-    i = gimp_main (&PLUG_IN_INFO, argc, argv);
+MAIN()
 
-    for (i = 0; i < argc; ++i)
-        g_free (argv[i]);
-    g_free (argv);
-
-    if (i == EXIT_SUCCESS)
-        return sc->T;
-
-    return sc->F;
-}
 
 static void
 script_fu_query (void)
diff --git a/tinyscheme/Makefile.am b/tinyscheme/Makefile.am
index acdf951..c0be36c 100644
--- a/tinyscheme/Makefile.am
+++ b/tinyscheme/Makefile.am
@@ -1,7 +1,7 @@
 ## Process this file with automake to produce Makefile.in
 
 AM_CFLAGS = \
-    -DSTANDALONE=1      \
+    -DSTANDALONE=0      \
     -DUSE_INTERFACE=1   \
     -DUSE_MATH=1        \
     -DUSE_ASCII_NAMES=0 \
@@ -10,19 +10,15 @@ AM_CFLAGS = \
     -DSUN_DL=1          \
     $(GLIB_CFLAGS)        
 
-libexecdir = $(GIMP_LIBDIR)/tiny-fu
+noinst_LIBRARIES = libtinyscheme.a
 
-libexec_PROGRAMS = tinyscheme
-
-tinyscheme_SOURCES = \
+libtinyscheme_a_SOURCES = \
     dynload.c        \
     scheme.c         \
     opdefines.h      \
     scheme-private.h \
     scheme.h
 
-LDADD = -ldl -lm
-
 EXTRA_DIST = \
     BUILDING   \
     CHANGES    \
diff --git a/tinyscheme/scheme.c b/tinyscheme/scheme.c
index 75a9af7..e90b30c 100644
--- a/tinyscheme/scheme.c
+++ b/tinyscheme/scheme.c
@@ -5214,39 +5214,6 @@ int main(int argc, char **argv) {
 #if USE_DL
   scheme_define(&sc,sc.global_env,mk_symbol(&sc,"load-extension"),mk_foreign_func(&sc, scm_load_ext));
 #endif
-
-  if (argc == 7 && strcmp (argv[2], "-gimp") == 0)
-  {
-    pointer args = sc.NIL;
-    char *s;
-    int i;
-
-    s = g_strdup_printf ("%s/%s", getenv("TINYFUPATH"), "tiny_fu");
-    scm_load_ext(&sc, mk_symbol (&sc, s));  //Load tiny-fu extension
-    g_free (s);
-
-    for (i = 1; i < argc; ++i)
-      {
-        pointer value = mk_string (&sc, argv[i]);
-        args = cons (&sc, value, args);
-      }
-    args = reverse_in_place (&sc, sc.NIL, args);
-    scheme_define (&sc, sc.global_env, mk_symbol (&sc, "*args*"), args);
-
-    scheme_load_string(&sc, "(tiny-fu-init *args*)");
-
-    fin = fopen (argv[1], "rb");
-    if (fin == 0)
-        fprintf (stderr, "Could not open file %s\n", argv[1]);
-    else
-      {
-        scheme_load_file (&sc, fin);
-        fclose (fin);
-      }
-  }
-  else {
-
-  //Start of original standalone initialization
   argv++;
   if(g_access(file_name,0)!=0) {
     char *p=getenv("TINYSCHEMEINIT");
@@ -5298,10 +5265,6 @@ int main(int argc, char **argv) {
   if(argc==1) {
     scheme_load_named_file(&sc,stdin,0);
   }
-  //End of original standalone initialization
-
-  } //End of else block
-
   retcode=sc.retcode;
   scheme_deinit(&sc);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]