summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Henstridge <james@daa.com.au>2001-04-21 04:25:40 +0000
committerJames Henstridge <jamesh@src.gnome.org>2001-04-21 04:25:40 +0000
commit6fe397321747ac77231fe8155b4b6160a630344d (patch)
treea460d0bfbed7f03497ba92ac402af4d9eda862ac
parent1b983861bad4621ebe6fbabb4f45527cd7dd823e (diff)
downloadpygtk-6fe397321747ac77231fe8155b4b6160a630344d.tar.gz
install code generator and defs files. Install pygtk-codegen-1.2 script.
2001-04-21 James Henstridge <james@daa.com.au> * generate/Makefile.am: install code generator and defs files. Install pygtk-codegen-1.2 script. * configure.in (AC_OUTPUT): substitute vars in pygtk-codegen-1.2. * generate/pygtk-codegen-1.2.in: short script to call generate.py * generate/generate.py (__main__): make generate.py callable as a script.
-rw-r--r--ChangeLog12
-rw-r--r--configure.in7
-rw-r--r--generate/Makefile.am10
-rw-r--r--generate/generate.py38
4 files changed, 62 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 2578082d..2c39f5b1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2001-04-21 James Henstridge <james@daa.com.au>
+
+ * generate/Makefile.am: install code generator and defs files.
+ Install pygtk-codegen-1.2 script.
+
+ * configure.in (AC_OUTPUT): substitute vars in pygtk-codegen-1.2.
+
+ * generate/pygtk-codegen-1.2.in: short script to call generate.py
+
+ * generate/generate.py (__main__): make generate.py callable as a
+ script.
+
2001-03-13 James Henstridge <james@daa.com.au>
* configure.in (BUILD_PIXBUF): add configure checks for the pixbuf
diff --git a/configure.in b/configure.in
index 8990ad92..d921ad66 100644
--- a/configure.in
+++ b/configure.in
@@ -58,6 +58,11 @@ if test "x$enable_numpy" != xno; then
CPPFLAGS="$save_CPPFLAGS"
fi
-AC_OUTPUT(Makefile generate/Makefile pyglade/Makefile)
+AC_OUTPUT(
+Makefile
+generate/Makefile
+generate/pygtk-codegen-1.2
+pyglade/Makefile
+)
diff --git a/generate/Makefile.am b/generate/Makefile.am
index 7ccfef4f..5053ebb6 100644
--- a/generate/Makefile.am
+++ b/generate/Makefile.am
@@ -1,9 +1,15 @@
-noinst_PYTHON = generate.py scmexpr.py
+bin_SCRIPTS = pygtk-codegen-1.2
-EXTRA_DIST = gtk.defs gtkbase.defs gtkcontainers.defs gtkdata.defs \
+codegendir = $(pkgdatadir)/1.2/codegen
+codegen_PYTHON = generate.py scmexpr.py
+
+defsdir = $(pkgdatadir)/1.2/defs
+defs_DATA = gtk.defs gtkbase.defs gtkcontainers.defs gtkdata.defs \
gtkedit.defs gtkenums.defs gtklists.defs gtkmenus.defs gtkmisc.defs \
gtkranges.defs gtkdnd.defs gtkgl.defs libglade.defs
+EXTRA_DIST = $(defs_DATA) pygtk-codegen-1.2.in
+
all: gtk.ignore gtkgl.ignore libglade.ignore
gtk.ignore: ../gtkmodule.c
diff --git a/generate/generate.py b/generate/generate.py
index d106e8d0..a8975e7b 100644
--- a/generate/generate.py
+++ b/generate/generate.py
@@ -1,3 +1,4 @@
+import sys, getopt
import os
import string
import scmexpr
@@ -178,7 +179,7 @@ class TypesParser(scmexpr.Parser):
self.startParsing(scmexpr.parse(fp))
class FunctionDefsParser(TypesParser):
- def __init__(self, input, prefix='gtkmodule', typeprefix=''):
+ def __init__(self, input, prefix='gtkmodule', typeprefix='&'):
# typeprefix is set to & if type structs are not pointers
TypesParser.__init__(self, input)
self.impl = open(prefix + '_impl.c', "w")
@@ -474,7 +475,7 @@ class FunctionDefsParser(TypesParser):
class FilteringParser(FunctionDefsParser):
"""A refinement of FunctionDefsParser with some common filter types
built in"""
- def __init__(self, input, prefix='gtkmodule', typeprefix=''):
+ def __init__(self, input, prefix='gtkmodule', typeprefix='&'):
FunctionDefsParser.__init__(self, input, prefix, typeprefix)
# hash lookups are pretty fast ...
self.excludeList = {}
@@ -504,3 +505,36 @@ class FilteringParser(FunctionDefsParser):
if glob not in self.excludeGlob:
self.excludeGlob.append(glob)
+if __name__ == '__main__':
+ opts, args = getopt.getopt(sys.argv[1:], 'd:o:h',
+ ['defs=', 'output-prefix=', 'exclude-file=',
+ 'exclude-glob', 'register=', 'help'])
+ defs = None
+ output_prefix = None
+ exclude_files = []
+ exclude_glob = []
+ for opt, arg in opts:
+ if opt in ('-d', '--defs'):
+ defs = arg
+ elif opt in ('-o', '--output-prefix'):
+ output_prefix=arg
+ elif opt == '--exclude-file':
+ exclude_files.append(arg)
+ elif opt == '--exclude-glob':
+ exclude_globs.append(arg)
+ elif opt == '--register':
+ TypesParser(arg).startParsing()
+ elif opt in (-h, '--help'):
+ sys.stderr.write('usage: generate.py -d defs file -o output-prefix\n')
+ sys.exit(0)
+ if not defs or not output_prefix:
+ sys.stderr.write('usage: generate.py -d defs file -o output-prefix\n')
+ sys.exit(1)
+ parser = FilteringParser(input=defs, prefix=output_prefix,
+ typeprefix='&')
+ for file in exclude_files:
+ parser.addExcludeFile(file)
+ for glob in exclude_globs:
+ parser.addExcludeGlob(glob)
+
+ parser.startParsing()