1 #if defined(HAVE_CONFIG_H) && !defined(GEANYPY_WINDOWS)
2 # include "config.h"
3 #endif
4 
5 #include "geanypy.h"
6 
7 
8 static PyObject *
Glog_glog(PyObject * module,PyObject * args,PyObject * kwargs)9 Glog_glog(PyObject *module, PyObject *args, PyObject *kwargs)
10 {
11 	static gchar *kwlist[] = { "log_domain", "log_level", "message", NULL };
12 	gchar *log_domain, *message;
13 	GLogLevelFlags log_level;
14 
15 	if (PyArg_ParseTupleAndKeywords(args, kwargs, "sis", kwlist, &log_domain, &log_level, &message))
16 	{
17 		g_log(log_domain, log_level, "%s", message);
18 	}
19 	Py_RETURN_NONE;
20 }
21 
22 
23 static
24 PyMethodDef GlogModule_methods[] = {
25 	{ "glog", (PyCFunction) Glog_glog, METH_KEYWORDS, "Wrapper around g_log()." },
26 	{ NULL }
27 };
28 
29 
initglog(void)30 PyMODINIT_FUNC initglog(void)
31 {
32 	PyObject *m;
33 
34 	m = Py_InitModule3("glog", GlogModule_methods, "GLib Log utility functions.");
35 
36 	/* TODO: These constants are for the geany.logger.GLIB_LOG_LEVEL_MAP mapping.
37 	 *       It would be better to build this mapping on the C layer but how to
38 	 *       access the Python logging.* level constants here? */
39 	PyModule_AddIntConstant(m, "LOG_LEVEL_DEBUG", G_LOG_LEVEL_DEBUG);
40 	PyModule_AddIntConstant(m, "LOG_LEVEL_INFO", G_LOG_LEVEL_INFO);
41 	PyModule_AddIntConstant(m, "LOG_LEVEL_MESSAGE", G_LOG_LEVEL_MESSAGE);
42 	PyModule_AddIntConstant(m, "LOG_LEVEL_WARNING", G_LOG_LEVEL_WARNING);
43 	PyModule_AddIntConstant(m, "LOG_LEVEL_ERROR", G_LOG_LEVEL_ERROR);
44 	PyModule_AddIntConstant(m, "LOG_LEVEL_CRITICAL", G_LOG_LEVEL_CRITICAL);
45 }
46