PyGObject (PyGI)


October 25, 2013
New builds version 3.10 started.
Go to http://sourceforge.net/projects/pygobjectwin32/files/
Dec 20: Rev11. (Final?) installer!
Nov 22: Rev7. See SF page. LFS disabled by default, use separate runtime dll for each python, more libraries added, added GTK 3.8 dll as alternative for those who have problem with GDK 3.10
Nov 15: Rev6. See SF page. This is final from me, unless someone report problems.
Nov 10: Rev5. Added gtk3sourceview, gexiv2, gnome icon symbolic, devhelp, libpeas, webkitgtk 1.10 (now working online), cancel cairo-gl as I failed to build usable webkitgtk 2.2, atk: fix another missing export, gtk-doc added, enable adwaita by default. Still only for python 3.3
Nov 8: Added cogl, clutter, gstreamer, gst-plugins-base-good, gtkspell3, glade, goocanvas, json-glib, poppler-glib, osmgpsmap, soup, rsvg, champlain-memphis, gdl, gsf
Nov 5: Found out that -msse2 can be nasty one. Rev3 uploaded with tuned down optimization, fix gtk's bidi icon not displayed bug and fix fontconfig's APPSHAREFONTDIR.
Nov 1: Moluccas 0.8a released, will start to write the guide.
Oct 29: After few meddling with GTK+ 3.10.2/GLib 2.38.1. I'm a bit disappointed, both a bit rough on the release, I bet it not even tested with mingw -.-' Anyhow I manage to build them and found no significant/important improvement in Windows area despite the new features (but this is just my experience). Since I already spit it out (GI 2.38) I will continue on but using older GLib 2.36 and GTK 3.8. I will push another update to Moluccas (the Build Environment), tidying up patches for GTK  and then I will write the most requested one "How to build it all?", including "How to make static standalone exe of GTK3 based apps" :) and maybe MyPaint buildbot! .
Thanks to G.M. Tagliaretti for the encouragement to continue this and linked my build to PyGobject homepage. I'll consider the upcoming guide as an alternative to https://live.gnome.org/GTK%2B/Win32/MSVCCompilationOfGTKStack.

April 5, 2013
pygi-aio-3.4.2rev11.7z (binary only, for python 2.6, 2.7 and 3.3)
pygi-aio-3.4.2rev10_opt.7z (locales, docs, gi, devel files, other data)
Warning: I just realize that python 3.3 is using msvc 2010 (msvcr100.dll), while my build is using msvcr90.dll, A more proper build will need complete recompile. Oops.
Content:
gobject-introspection-1.34.2
*gtk 3.6.4 + adwaita theme [comment out gtk\etc\gtk-3.0\settings.ini to enable]
*glib 2.34.3 + networking (libproxy 0.4.11)
*pango 1.32.6 (harfbuzz 0.9.12, graphite2 1.2.0)
*cairo 1.12.10 (pixman 0.28.2) + GL (glew) + xml
fontconfig 2.10.91
freetype 2.4.10
*gdk-pixbuf 2.26.4 (jasper) + tiff + svg + wmf + psd + webp, alternative version with gdiplus available
*champlain 0.12.3 + *memphis 0.2.3
libxml2 2.9.0
dbus 1.6.8 + dbus-glib 0.100
enchant 1.6.0 + aspell English + hunspell [no dict] + voikko
geoclue 0.12.99
*geocode-glib 0.99.0
*telepathy-glib 0.20.1
*gdl 3.6.2
*clutter/cogl 1.12.2
*clutter-gst 2.0.0
*clutter-gtk 1.4.2
*glade 3.14.2
devhelp 3.6.1
*gtksourceview 3.6.3
*gtkspell3 3.0
*libpeas 1.6.2
*webkitgtk 1.10.2 (libxslt 1.1.28, sqlite 3.7.13)
*librsvg 2.36.4 (libcroco 0.6.8)
*libgda 5.03 (postgres 9 client, mdbtool) + jdbc + sqlite + bdb
*poppler 0.22.1 (openjpeg, lcms2)
*gstreamer 1.0.5 + *base + good + libav + ugly + bad
*gegl 0.2.0 + *babl 0.1.6 + *gegl-gtk3
gnutls 2.12.22 + gcrypt 1.5 + gpgerror
*libsoup-2.40.3, libsoup-gnome
*json-glib 0.14.2
*Gtranslator 2.91.6
*Gedit 3.6.2
*Gucharmap 3.6.1
*GooCanvas 2.0.1
*libGoffice 0.10.0
*libLasem 0.4.1
*osm-gps-map 0.8git
*Vips 7.30
*GVnc 0.5.1, *GtkVnc
* GExiv2

January 27, 2013
pygi-3.4.2_gtk+-3.6.4.7z

September 15, 2012
Experimental builds:
PyGI 3.3.91 for python 2.6, 2.7, 3.3 for Windows 32bit/64bit
GIRepo and typelibs
Runtime win32 Bundle
Runtime win64 bundle (GTK2/3 only)
Gobject Introspection 1.33.10 (static build) for python 2.6/2.7

These are PyGI, do not confused it with PyGTK see http://live.gnome.org/PyGObject/IntrospectionPorting

Example available at http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html

Minimal debug environment available (with mypaint as test-case): http://opensourcepack.blogspot.com/2013/01/mypaint-and-pygi.html

Still running gtk2? try:
Conservative PyGTK AIO or PyGTK 64bit

cairo-demo.py:

#!/usr/bin/env python
"""
Based on cairo-demo/X11/cairo-demo.c
"""

import cairo
from gi.repository import Gtk

SIZE = 30


def triangle(ctx):
    ctx.move_to(SIZE, 0)
    ctx.rel_line_to(SIZE, 2 * SIZE)
    ctx.rel_line_to(-2 * SIZE, 0)
    ctx.close_path()


def square(ctx):
    ctx.move_to(0, 0)
    ctx.rel_line_to(2 * SIZE, 0)
    ctx.rel_line_to(0, 2 * SIZE)
    ctx.rel_line_to(-2 * SIZE, 0)
    ctx.close_path()


def bowtie(ctx):
    ctx.move_to(0, 0)
    ctx.rel_line_to(2 * SIZE, 2 * SIZE)
    ctx.rel_line_to(-2 * SIZE, 0)
    ctx.rel_line_to(2 * SIZE, -2 * SIZE)
    ctx.close_path()


def inf(ctx):
    ctx.move_to(0, SIZE)
    ctx.rel_curve_to(0, SIZE, SIZE, SIZE, 2 * SIZE, 0)
    ctx.rel_curve_to(SIZE, -SIZE, 2 * SIZE, -SIZE, 2 * SIZE, 0)
    ctx.rel_curve_to(0, SIZE, -SIZE, SIZE, - 2 * SIZE, 0)
    ctx.rel_curve_to(-SIZE, -SIZE, - 2 * SIZE, -SIZE, - 2 * SIZE, 0)
    ctx.close_path()


def draw_shapes(ctx, x, y, fill):
    ctx.save()

    ctx.new_path()
    ctx.translate(x + SIZE, y + SIZE)
    bowtie(ctx)
    if fill:
        ctx.fill()
    else:
        ctx.stroke()

    ctx.new_path()
    ctx.translate(3 * SIZE, 0)
    square(ctx)
    if fill:
        ctx.fill()
    else:
        ctx.stroke()

    ctx.new_path()
    ctx.translate(3 * SIZE, 0)
    triangle(ctx)
    if fill:
        ctx.fill()
    else:
        ctx.stroke()

    ctx.new_path()
    ctx.translate(3 * SIZE, 0)
    inf(ctx)
    if fill:
        ctx.fill()
    else:
        ctx.stroke()

    ctx.restore()


def fill_shapes(ctx, x, y):
    draw_shapes(ctx, x, y, True)


def stroke_shapes(ctx, x, y):
    draw_shapes(ctx, x, y, False)


def draw(da, ctx):
    ctx.set_source_rgb(0, 0, 0)

    ctx.set_line_width(SIZE / 4)
    ctx.set_tolerance(0.1)

    ctx.set_line_join(cairo.LINE_JOIN_ROUND)
    ctx.set_dash([SIZE / 4.0, SIZE / 4.0], 0)
    stroke_shapes(ctx, 0, 0)

    ctx.set_dash([], 0)
    stroke_shapes(ctx, 0, 3 * SIZE)

    ctx.set_line_join(cairo.LINE_JOIN_BEVEL)
    stroke_shapes(ctx, 0, 6 * SIZE)

    ctx.set_line_join(cairo.LINE_JOIN_MITER)
    stroke_shapes(ctx, 0, 9 * SIZE)

    fill_shapes(ctx, 0, 12 * SIZE)

    ctx.set_line_join(cairo.LINE_JOIN_BEVEL)
    fill_shapes(ctx, 0, 15 * SIZE)
    ctx.set_source_rgb(1, 0, 0)
    stroke_shapes(ctx, 0, 15 * SIZE)


def main():
    win = Gtk.Window()
    win.connect('destroy', lambda w: Gtk.main_quit())
    win.set_default_size(450, 550)

    drawingarea = Gtk.DrawingArea()
    win.add(drawingarea)
    drawingarea.connect('draw', draw)

    win.show_all()
    Gtk.main()

if __name__ == '__main__':
    main()

10 comments:

  1. Hi, Thanks for doing this. It seems the installer needs taskkill.exe that is not shipped in Windows XP Home. I downloaded from https://waybackassets.bk21.net/20070125030456/http://home.wanadoo.nl/gigajosh/files/taskkill_en.zip and put in the Windows path.

    ReplyDelete
    Replies
    1. Oops my bad...
      I will bundling taskkill.exe from reactos for rev11. It only used to kill zenity's progress window after setup finished copying.

      Delete
  2. Hi, thanks for this! I'm having trouble using the installer - when I run it, I get an error saying installation requires admin privileges. I do have admin privileges but the UAC pop does not appear. I am not very familiar with Zenity.

    ReplyDelete
    Replies
    1. Hi, in XP it's "normal" that an installer will fail if not run by admin because XP dont recognize manifest (embedded nor paired autoelevate manifest). Yes, it's also possible to auto-elevate (pop up runas dialog) in XP but it require source code change in the 7zipSFX (which setup.exe based on).

      In vista or later it will use heuristic autoelevate since the filename is "setup.exe". Admin privilege needed to install documentation in all users appdata because of its huge size and that's the only recognized shared location by devhelp too.

      btw, sorry for the late reply it was 2:00 here when you post it :D

      Delete
    2. just read your mail, I dont realize that setup.exe already embedded with "asInvoker" manifest so the heuristic elevation ignored. Will fix this in rev11

      Delete
  3. This comment has been removed by the author.

    ReplyDelete
  4. Hi, Thank you for this great work.
    There is a bug i want to feedback.
    I am using python 2.7 with vs2010 installed. When I install the pygobject-aio, it install the vs10.x runtime which version does not support 2.7. I think it's about the setup.exe.

    ReplyDelete
    Replies
    1. Correct, there is typo in setup.bat. will fix that in rev11
      thanks

      Delete
    2. Expecting rev11. :)
      Will it come before Chistmas Day?

      Delete
    3. Yes, I suppose as early as Friday or as late as Sunday. It will have some upstream updates and a fix for annoying "missing icons" issue that plagued win32 platform.

      Tagliaretti plan to make gtk3-demo in python, would be great if it could be included in rev11 though.

      Delete