All pastes #820052 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-12-17 10:34 UTC
rendered paste body
=== added file 'libs/pypgm/pgm/pgmgtk.defs'
--- libs/pypgm/pgm/pgmgtk.defs	1970-01-01 00:00:00 +0000
+++ libs/pypgm/pgm/pgmgtk.defs	2007-12-17 10:30:01 +0000
@@ -0,0 +1,25 @@
+;; -*- mode: scheme; coding: utf-8 -*-
+
+; object definitions
+
+(define-object PgmGtk
+  (in-module "PgmGtk")
+  (parent "GtkSocket")
+  (c-name "PgmGtk")
+  (gtype-id "PGM_TYPE_GTK")
+)
+
+(define-function pgm_gtk_new
+  (c-name "pgm_gtk_new")
+  (is-constructor-of "PgmGtk")
+  (return-type "GtkWidget*")
+)
+
+(define-method set_viewport
+  (of-object "PgmGtk")
+  (c-name "pgm_gtk_set_viewport")
+  (return-type "gboolean")
+  (parameters
+    '("PgmViewport*" "viewport")
+  )
+)

=== added file 'libs/pypgm/pgm/pgmgtk.override'
--- libs/pypgm/pgm/pgmgtk.override	1970-01-01 00:00:00 +0000
+++ libs/pypgm/pgm/pgmgtk.override	2007-12-17 10:30:01 +0000
@@ -0,0 +1,10 @@
+%%
+headers
+#define NO_IMPORT_PYGOBJECT
+#include "pygobject.h"
+#include <pgm/pgm.h>
+#include <pgm/gtk/pgmgtk.h>
+
+%%
+import pgm.Viewport as PyPgmViewport_Type
+import gtk.Socket as PyGtkSocket_Type

=== modified file 'libs/pypgm/pgm/Makefile.am'
--- libs/pypgm/pgm/Makefile.am	2007-08-02 18:21:17 +0000
+++ libs/pypgm/pgm/Makefile.am	2007-12-17 10:30:01 +0000
@@ -32,11 +32,38 @@
 
 CLEANFILES = pgm.c
 
+if USE_GTK_WIDGET
+pyexec_LTLIBRARIES += _pgmgtkmodule.la
+
+_pgmgtkmodule_la_LDFLAGS = \
+	@PY_PGM_LDFLAGS@ \
+	-module -avoid-version \
+	-export-symbols-regex init_pgmgtk
+
+_pgmgtkmodule_la_CFLAGS = \
+	@PY_PGM_CFLAGS@ \
+	@GTK_CFLAGS@ \
+	-I$(top_builddir)/libs
+
+_pgmgtkmodule_la_LIBADD = \
+	@PY_PGM_LIBS@ \
+	@GTK_LIBS@ \
+	$(top_builddir)/libs/pgm/gtk/libpigment-gtk-@PGM_MAJORMINOR@.la
+
+_pgmgtkmodule_la_SOURCES = pgmgtkmodule.c
+
+nodist__pgmgtkmodule_la_SOURCES = pgmgtk.c
+
+pgmgtk.c: pgmgtk.defs
+
+EXTRA_DIST += pgmgtk.defs
+endif
+
 LIBTOOL=$(top_builddir)/libtool
 
-
 .defs.c:
 	($(PYTHON) $(top_srcdir)/libs/codegen/codegen.py \
+	--register $(srcdir)/pgm.defs \
 	--override $(srcdir)/$*.override \
 	--prefix py$* $(srcdir)/$*.defs) > gen-$*.c \
 	&& cp gen-$*.c $*.c \

=== modified file 'libs/pypgm/pgm/__init__.py'
--- libs/pypgm/pgm/__init__.py	2007-07-03 17:35:49 +0000
+++ libs/pypgm/pgm/__init__.py	2007-12-17 10:30:01 +0000
@@ -43,3 +43,11 @@
         return getattr(module, attr)
 
 keysyms = LazyModule('keysyms', locals())
+
+try:
+    # FIXME: this is suboptimal, we load pygtk even if the user doesn't need it.
+    # Maybe building the module as _gtkmodule.so isn't that bad after all.
+    import _pgmgtk as gtk
+    sys.modules['pgm.gtk'] = gtk
+except ImportError:
+    pass