# -*- python -*-
# encoding: utf-8

import os
import Common

def configure(conf):
    conf.env.append_value('MODULES_AVAILABLE', 'bonobo')
    conf.env.append_value('MODULES_AVAILABLE', 'bonobo.ui')

    if 'bonobo' in conf.env['ENABLE_MODULES'] or 'all' in conf.env['ENABLE_MODULES']:
        if conf.check_pkg('libbonobo-2.0 >= 2.8.0 pygobject-2.0 pyorbit-2 >= 2.0.1',
                          destvar='BONOBO', mandatory=False):
            conf.env.append_value('MODULES_TO_BUILD', 'bonobo')

    if 'bonobo.ui' in conf.env['ENABLE_MODULES'] or 'all' in conf.env['ENABLE_MODULES']:
        if conf.check_pkg('libbonoboui-2.0 >= 2.8.0 pygobject-2.0 pyorbit-2 >= 2.0.1',
                          destvar='BONOBOUI', mandatory=False):
            conf.env.append_value('MODULES_TO_BUILD', 'bonobo.ui')

def codegen(bld, module):
    cmd = bld.create_obj('command-output')
    cmd.command = 'pygtk-codegen-2.0'
    cmd.command_is_external = True
    cmd.prio = 5
    cmd.argv = [
        '--py_ssize_t-clean',
        '--load-types', cmd.input_file('bonobo-arg-types.py'),
        '--register', os.path.join(cmd.env['PYGTK_DEFSDIR'], 'pango-types.defs'),
        '--register', os.path.join(cmd.env['PYGTK_DEFSDIR'], 'gdk-types.defs'),
        '--register', os.path.join(cmd.env['PYGTK_DEFSDIR'], 'gtk-types.defs'),
        '--register', cmd.input_file('../gnome/gnome-types.defs'),
        '--register', cmd.input_file('../gnomecanvas/canvas.defs'),
        '--register', cmd.input_file('bonobo-types.defs'),
        '--prefix', 'py'+module,
        '--override', cmd.input_file("%s.override" % module),
        cmd.input_file("%s.defs" % module),
        ]
    cmd.stdout = '%s.c' % module
    return cmd


def build(bld):
    
    if 'bonobo' in bld.env()['MODULES_TO_BUILD']:
        py = bld.create_obj('py')
        py.inst_dir = os.path.join('gtk-2.0', 'bonobo')
        py.source = "__init__.py"

        codegen(bld, 'bonobo')
        pyext = bld.create_pyext()
        pyext.source = 'bonobomodule.c bonobo.c bonobo-arg.c pybonobo.c'
        pyext.target = '_bonobo'
        pyext.uselib = 'BONOBO'
        pyext.includes = '.'
        pyext.inst_var = 'PYTHONDIR'
        pyext.inst_dir = os.path.join('gtk-2.0', 'bonobo')

        defsdir = Common.install_files('DATADIR', os.path.join('pygtk', '2.0', 'defs'),
                                       ['bonobo.defs',
                                        'bonobo-types.defs',
                                        ])

        pyext = bld.create_pyext()
        pyext.source = 'activationmodule.c'
        pyext.target = 'activation'
        pyext.uselib = 'BONOBO'
        pyext.includes = '.'
        pyext.inst_var = 'PYTHONDIR'
        pyext.inst_dir = os.path.join('gtk-2.0', 'bonobo')

    
    if 'bonobo.ui' in bld.env()['MODULES_TO_BUILD']:
        codegen(bld, 'bonoboui')

        pyext = bld.create_pyext()
        pyext.source = 'bonobouimodule.c bonoboui.c'
        pyext.target = 'ui'
        pyext.uselib = 'BONOBOUI'
        pyext.includes = '.'
        pyext.inst_var = 'PYTHONDIR'
        pyext.inst_dir = os.path.join('gtk-2.0', 'bonobo')

        defsdir = Common.install_files('DATADIR', os.path.join('pygtk', '2.0', 'defs'),
                                       ['bonoboui.defs',
                                        'bonoboui-types.defs',
                                        ])

    Common.install_files('DATADIR', os.path.join('pygtk', '2.0', 'argtypes'),
                         'bonobo-arg-types.py')
