File: gnomemodule.c

package info (click to toggle)
gnome-python 2.28.1%2Bdfsg-1.2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 3,312 kB
  • ctags: 1,032
  • sloc: sh: 10,219; ansic: 7,997; xml: 2,464; python: 1,886; makefile: 396
file content (104 lines) | stat: -rw-r--r-- 5,334 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/* -*- Mode: C; c-basic-offset: 4 -*- */

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

/* include this first, before NO_IMPORT_PYGOBJECT is defined */
#include <pygobject.h>
#include <libgnome/gnome-init.h>

void pygnome_register_classes (PyObject *d);
void pygnome_add_constants (PyObject *module, const gchar *strip_prefix);
extern PyMethodDef pygnome_functions[];

void
pygnome_add_defined_constants(PyObject *dict)
{
    PyDict_SetItemString(dict, "PARAM_NONE", Py_None);
    Py_INCREF(Py_None);

    PyDict_SetItemString(dict, "PARAM_POPT_TABLE", PyString_FromString(GNOME_PARAM_POPT_TABLE));
    PyDict_SetItemString(dict, "PARAM_POPT_FLAGS", PyString_FromString(GNOME_PARAM_POPT_FLAGS));
    PyDict_SetItemString(dict, "PARAM_POPT_CONTEXT", PyString_FromString(GNOME_PARAM_POPT_CONTEXT));
    PyDict_SetItemString(dict, "PARAM_CREATE_DIRECTORIES", PyString_FromString(GNOME_PARAM_CREATE_DIRECTORIES));
    PyDict_SetItemString(dict, "PARAM_ENABLE_SOUND", PyString_FromString(GNOME_PARAM_ENABLE_SOUND));
    PyDict_SetItemString(dict, "PARAM_ESPEAKER", PyString_FromString(GNOME_PARAM_ESPEAKER));
    PyDict_SetItemString(dict, "PARAM_APP_ID", PyString_FromString(GNOME_PARAM_APP_ID));
    PyDict_SetItemString(dict, "PARAM_APP_VERSION", PyString_FromString(GNOME_PARAM_APP_VERSION));
    PyDict_SetItemString(dict, "PARAM_GNOME_PREFIX", PyString_FromString(GNOME_PARAM_GNOME_PREFIX));
    PyDict_SetItemString(dict, "PARAM_GNOME_SYSCONFDIR", PyString_FromString(GNOME_PARAM_GNOME_SYSCONFDIR));
    PyDict_SetItemString(dict, "PARAM_GNOME_DATADIR", PyString_FromString(GNOME_PARAM_GNOME_DATADIR));
    PyDict_SetItemString(dict, "PARAM_GNOME_LIBDIR", PyString_FromString(GNOME_PARAM_GNOME_LIBDIR));
    PyDict_SetItemString(dict, "PARAM_APP_PREFIX", PyString_FromString(GNOME_PARAM_APP_PREFIX));
    PyDict_SetItemString(dict, "PARAM_APP_SYSCONFDIR", PyString_FromString(GNOME_PARAM_APP_SYSCONFDIR));
    PyDict_SetItemString(dict, "PARAM_APP_DATADIR", PyString_FromString(GNOME_PARAM_APP_DATADIR));
    PyDict_SetItemString(dict, "PARAM_APP_LIBDIR", PyString_FromString(GNOME_PARAM_APP_LIBDIR));
    PyDict_SetItemString(dict, "PARAM_HUMAN_READABLE_NAME", PyString_FromString(GNOME_PARAM_HUMAN_READABLE_NAME));
    PyDict_SetItemString(dict, "PARAM_GNOME_PATH", PyString_FromString(GNOME_PARAM_GNOME_PATH));

    PyDict_SetItemString(dict, "POPT_ARGFLAG_OR", PyInt_FromLong(POPT_ARGFLAG_OR));
    PyDict_SetItemString(dict, "POPT_ARGFLAG_AND", PyInt_FromLong(POPT_ARGFLAG_AND));
    PyDict_SetItemString(dict, "POPT_ARGFLAG_XOR", PyInt_FromLong(POPT_ARGFLAG_XOR));
    PyDict_SetItemString(dict, "POPT_ARGFLAG_NOT", PyInt_FromLong(POPT_ARGFLAG_NOT));
    PyDict_SetItemString(dict, "POPT_ARGFLAG_NOR", PyInt_FromLong(POPT_ARGFLAG_NOR));
    PyDict_SetItemString(dict, "POPT_ARGFLAG_NAND", PyInt_FromLong(POPT_ARGFLAG_NAND));
    PyDict_SetItemString(dict, "POPT_ARGFLAG_LOGICALOPS", PyInt_FromLong(POPT_ARGFLAG_LOGICALOPS));
    PyDict_SetItemString(dict, "POPT_ARGFLAG_ONEDASH", PyInt_FromLong(POPT_ARGFLAG_ONEDASH));
    PyDict_SetItemString(dict, "POPT_ARGFLAG_DOC_HIDDEN", PyInt_FromLong(POPT_ARGFLAG_DOC_HIDDEN));
    PyDict_SetItemString(dict, "POPT_ARGFLAG_STRIP", PyInt_FromLong(POPT_ARGFLAG_STRIP));
    PyDict_SetItemString(dict, "POPT_ARGFLAG_OPTIONAL", PyInt_FromLong(POPT_ARGFLAG_OPTIONAL));
    PyDict_SetItemString(dict, "POPT_ARGFLAG_SHOW_DEFAULT", PyInt_FromLong(POPT_ARGFLAG_SHOW_DEFAULT));
    PyDict_SetItemString(dict, "POPT_CONTEXT_NO_EXEC", PyInt_FromLong(POPT_CONTEXT_NO_EXEC));
    PyDict_SetItemString(dict, "POPT_CONTEXT_KEEP_FIRST", PyInt_FromLong(POPT_CONTEXT_KEEP_FIRST));
    PyDict_SetItemString(dict, "POPT_CONTEXT_POSIXMEHARDER", PyInt_FromLong(POPT_CONTEXT_POSIXMEHARDER));
    PyDict_SetItemString(dict, "POPT_CONTEXT_ARG_OPTS", PyInt_FromLong(POPT_CONTEXT_ARG_OPTS));
}


static void
check_pygtk_version(void)
{
    PyObject *m, *d, *pygtk_version, *pygtk_required_version;
    
    m = PyImport_AddModule("gobject");
    d = PyModule_GetDict(m);
    pygtk_version = PyDict_GetItemString(d, "pygtk_version");
    pygtk_required_version = Py_BuildValue("(iii)",
                                           PYGTK_REQUIRED_MAJOR_VERSION,
                                           PYGTK_REQUIRED_MINOR_VERSION,
                                           PYGTK_REQUIRED_MICRO_VERSION);
    if (PyObject_Compare(pygtk_version, pygtk_required_version) < 0) {
        g_error("PyGTK %s required, but %s found.",
                PyString_AsString(PyObject_Repr(pygtk_required_version)),
                PyString_AsString(PyObject_Repr(pygtk_version)));
    }
    Py_DECREF(pygtk_required_version);
    return;
}


DL_EXPORT(void)
init_gnome (void)
{
    PyObject *m, *d, *tuple;

    init_pygobject();
    check_pygtk_version();

    m = Py_InitModule("_gnome", pygnome_functions);
    d = PyModule_GetDict(m);

    pygnome_register_classes(d);
    pygnome_add_constants(m, "GNOME_");
    pygnome_add_defined_constants(d);

    /* gnome-python version */
    tuple = Py_BuildValue("(iii)", GNOME_PYTHON_MAJOR_VERSION, GNOME_PYTHON_MINOR_VERSION, 
                          GNOME_PYTHON_MICRO_VERSION);
    PyDict_SetItemString(d, "gnome_python_version", tuple);
    Py_DECREF(tuple);

    if (!gnome_program_module_registered(LIBGNOME_MODULE))
	gnome_program_module_register(LIBGNOME_MODULE);
}