[beryl-commits] r1523 - in trunk/beryl-python: . src
svn at server.beryl-project.org
svn at server.beryl-project.org
Mon Dec 4 03:43:02 CET 2006
Author: svn
Date: 2006-12-04 03:43:01 +0100 (Mon, 04 Dec 2006)
New Revision: 1523
Added:
trunk/beryl-python/src/berylsettings.pyx
Removed:
trunk/beryl-python/src/berylsettings.c
Modified:
trunk/beryl-python/ChangeLog
trunk/beryl-python/configure.ac
trunk/beryl-python/src/Makefile.am
Log:
Modified: trunk/beryl-python/ChangeLog
===================================================================
--- trunk/beryl-python/ChangeLog 2006-12-04 02:09:20 UTC (rev 1522)
+++ trunk/beryl-python/ChangeLog 2006-12-04 02:43:01 UTC (rev 1523)
@@ -1,3 +1,10 @@
+2006-12-03 Travis Watkins <alleykat at gmail.com>
+
+ * src/berylsettings.c: removed
+ * src/berylsettings.pyx:
+ configure.ac:
+ src/Makefile.am: rewrite in pyrex
+
2006-11-29 Travis Watkins <alleykat at gmail.com>
* src/berylsettings.c: initial write support, doesn't quite work
Modified: trunk/beryl-python/configure.ac
===================================================================
--- trunk/beryl-python/configure.ac 2006-12-04 02:09:20 UTC (rev 1522)
+++ trunk/beryl-python/configure.ac 2006-12-04 02:43:01 UTC (rev 1523)
@@ -26,6 +26,11 @@
PKG_CHECK_MODULES(PYBERYL, $PYBERYL_REQUIRES)
AC_SUBST(PYBERYL_REQUIRES)
+AC_CHECK_PROGS(PYREX, pyrexc)
+if test -z "$PYREX" ; then
+ AC_MSG_ERROR([Couldn't find Pyrex])
+fi
+
AC_CONFIG_FILES([
Makefile
src/Makefile
Modified: trunk/beryl-python/src/Makefile.am
===================================================================
--- trunk/beryl-python/src/Makefile.am 2006-12-04 02:09:20 UTC (rev 1522)
+++ trunk/beryl-python/src/Makefile.am 2006-12-04 02:43:01 UTC (rev 1523)
@@ -22,5 +22,6 @@
berylsettings_la_LIBADD = @PYBERYL_LIBS@
berylsettings_la_SOURCES = berylsettings.c
+berylsettings.c:
+ -pyrexc berylsettings.pyx
-
Deleted: trunk/beryl-python/src/berylsettings.c
===================================================================
--- trunk/beryl-python/src/berylsettings.c 2006-12-04 02:09:20 UTC (rev 1522)
+++ trunk/beryl-python/src/berylsettings.c 2006-12-04 02:43:01 UTC (rev 1523)
@@ -1,827 +0,0 @@
-/*
- * beryl-python - python wrapper for libberylsettings
- * Copyright (C) 2006 Travis Watkins
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <config.h>
-
-#include <Python.h>
-#include <beryl-settings.h>
-#include <glib.h>
-
-#define REGISTER_TYPE(t, n) G_STMT_START \
- { \
- PyType_Ready (&t); \
- PyModule_AddObject (mod, n, (PyObject *)&t); \
- } G_STMT_END
-
-typedef struct
-{
- PyObject_HEAD
- BerylSettingsContext *context;
-} PyBerylSettingsContext;
-
-typedef struct
-{
- PyObject_HEAD
- BerylSettingsContext *context;
- BerylSettingsPlugin *plugin;
- PyObject *setting_names;
-} PyBerylSettingsPlugin;
-
-typedef struct
-{
- PyListObject list;
-} PyBerylSettingsList;
-
-static PyTypeObject PyBerylSettingsList_Type;
-
-static void pyberylsettings_context_dealloc (PyBerylSettingsContext*);
-static PyBerylSettingsContext *pyberylsettings_context_wrap (BerylSettingsContext*);
-static PyObject *pyberylsettings_context_getattro (PyBerylSettingsContext*, PyObject*);
-
-static PyBerylSettingsPlugin *pyberylsettings_plugin_wrap (BerylSettingsPlugin*, BerylSettingsContext*);
-static PyObject *pyberylsettings_plugin_getattro (PyBerylSettingsPlugin*, PyObject*);
-static int pyberylsettings_plugin_setattro (PyBerylSettingsPlugin*, PyObject*, PyObject*);
-
-static int pyberylsettings_list_setattro (PyBerylSettingsList*, PyObject*, PyObject*);
-
-void initberylsettings (void);
-
-gint modifiers[] =
-{
- ShiftMask,
- ControlMask,
- CompAltMask,
- CompSuperMask,
- CompHyperMask,
- CompMetaMask,
- CompModeSwitchMask,
- Mod1Mask,
- Mod2Mask,
- Mod3Mask,
- Mod4Mask,
- Mod5Mask,
-};
-
-gchar * modifier_names[] =
-{
- "Shift",
- "Control",
- "Alt",
- "Super",
- "Hyper",
- "Meta",
- "Mode",
- "Mod1",
- "Mod2",
- "Mod3",
- "Mod4",
- "Mod5",
-};
-#define NMODIFIERS (sizeof(modifier_names)/sizeof(gchar *))
-
-static inline PyObject *
-lookup_item_type_str (const char *item_type_str)
-{
- PyObject *module;
- module = PyDict_GetItemString (PyImport_GetModuleDict (), "berylsettings");
- return PyDict_GetItemString (PyModule_GetDict (module), item_type_str);
-}
-
-static PyObject *
-get_py_type_for_value(BerylSettingValue *value, BerylSettingType type)
-{
- gboolean bool_data;
- int int_data;
- gdouble float_data;
- const gchar *str_data;
- GSList * list_data;
- gint keysym, keymods, button, buttonmods, edgemask;
- gboolean bell, key_enabled, button_enabled;
- BerylSettingColorValue color_data;
- BerylSetting *setting = value->parent;
- BerylSettingType list_type;
- PyObject *color_list = PyObject_NEW (PyBerylSettingsList, &PyBerylSettingsList_Type);
- int i;
- PyObject *str_list;
- gchar *binding_string;
- PyObject *binding_list = PyList_New(4);
- // populate tuple with None
- PyList_SetItem(binding_list, 0, Py_None);
- PyList_SetItem(binding_list, 1, Py_None);
- PyList_SetItem(binding_list, 2, Py_None);
- PyList_SetItem(binding_list, 3, Py_None);
-
- switch (type)
- {
- case BERYL_SETTING_TYPE_BOOL:
- if (beryl_setting_value_get_bool(value, &bool_data))
- {
- return PyBool_FromLong(bool_data);
- }
- break;
- case BERYL_SETTING_TYPE_INT:
- if (beryl_setting_value_get_int(value, &int_data))
- {
- return PyInt_FromLong(int_data);
- }
- break;
- case BERYL_SETTING_TYPE_FLOAT:
- if (beryl_setting_value_get_float(value, &float_data))
- {
- return PyFloat_FromDouble(float_data);
- }
- break;
- case BERYL_SETTING_TYPE_STRING:
- if (beryl_setting_value_get_string(value, &str_data))
- {
- return PyString_FromString(str_data);
- }
- break;
- case BERYL_SETTING_TYPE_COLOR:
- if (beryl_setting_value_get_color(value, &color_data))
- {
- color_list = PyList_New(4);
- //set red, green, blue, and alpha to list
- PyList_SetItem(color_list, 0, PyLong_FromLong(((gdouble)color_data.array.array[0]/0xffff)));
- PyList_SetItem(color_list, 1, PyLong_FromLong(((gdouble)color_data.array.array[1]/0xffff)));
- PyList_SetItem(color_list, 2, PyLong_FromLong(((gdouble)color_data.array.array[2]/0xffff)));
- PyList_SetItem(color_list, 3, PyLong_FromLong(((gdouble)color_data.array.array[3]/0xffff)));
- return color_list;
- }
- break;
- case BERYL_SETTING_TYPE_BINDING:
- if (beryl_setting_get_can_set_button(setting, &bool_data) && bool_data)
- {
- binding_string = g_strdup("");
- beryl_setting_value_get_button_enabled(value, &button_enabled);
- if (!button_enabled)
- {
- PyList_SetItem(binding_list, 0, PyString_FromString("Disabled"));
- }
- else
- {
- gchar *temp;
- beryl_setting_value_get_buttonmods(value, &buttonmods);
- for(i=0;i<NMODIFIERS;i++)
- {
- if ((buttonmods & modifiers[i]))
- {
- temp = g_strconcat(binding_string, g_strdup_printf("<%s>", modifier_names[i]), NULL);
- g_free(binding_string);
- binding_string = temp;
- }
- }
- beryl_setting_value_get_button(value, &button);
- temp = g_strconcat(binding_string, g_strdup_printf("Button%d", button), NULL);
- g_free(binding_string);
- PyList_SetItem(binding_list, 0, PyString_FromString(temp));
- g_free(temp);
- }
- }
- if (beryl_setting_get_can_set_key(setting, &bool_data) && bool_data)
- {
- binding_string = g_strdup("");
- beryl_setting_value_get_key_enabled(value, &key_enabled);
- if (!key_enabled)
- {
- PyList_SetItem(binding_list, 1, PyString_FromString("Disabled"));
- }
- else
- {
- gchar *temp;
- beryl_setting_value_get_keymods(value, &keymods);
- for(i=0;i<NMODIFIERS;i++)
- {
- if ((keymods & modifiers[i]))
- {
- temp = g_strconcat(binding_string, g_strdup_printf("<%s>", modifier_names[i]), NULL);
- g_free(binding_string);
- binding_string = temp;
- }
- }
- beryl_setting_value_get_keysym(value, &keysym);
- if (!XKeysymToString(keysym))
- {
- temp = g_strconcat(binding_string, "None", NULL);
- }
- else
- {
- temp = g_strconcat(binding_string, XKeysymToString(keysym), NULL);
- }
- g_free(binding_string);
- PyList_SetItem(binding_list, 1, PyString_FromString(temp));
- g_free(temp);
- }
- }
- if (beryl_setting_get_can_set_edgemask(setting, &bool_data) && bool_data)
- {
- beryl_setting_value_get_edgemask(value, &edgemask);
- if (!edgemask)
- {
- PyList_SetItem(binding_list, 2, PyString_FromString("Disabled"));
- }
- else
- {
- for (i=0;i<SCREEN_EDGE_NUM;i++)
- {
- if (edgemask & (1<<i))
- {
- if (i == 0)
- PyList_SetItem(binding_list, 2, PyString_FromString("Left"));
- if (i == 1)
- PyList_SetItem(binding_list, 2, PyString_FromString("Right"));
- if (i == 2)
- PyList_SetItem(binding_list, 2, PyString_FromString("Top"));
- if (i == 3)
- PyList_SetItem(binding_list, 2, PyString_FromString("Bottom"));
- if (i == 4)
- PyList_SetItem(binding_list, 2, PyString_FromString("TopLeft"));
- if (i == 5)
- PyList_SetItem(binding_list, 2, PyString_FromString("TopRight"));
- if (i == 6)
- PyList_SetItem(binding_list, 2, PyString_FromString("BottomLeft"));
- if (i == 7)
- PyList_SetItem(binding_list, 2, PyString_FromString("BottomRight"));
- }
- }
- }
- }
- if (beryl_setting_get_can_set_bell(setting, &bool_data) && bool_data)
- {
- beryl_setting_value_get_bell(value, &bell);
- PyList_SetItem(binding_list, 3, PyBool_FromLong(bell));
- }
- return binding_list;
- break;
- case BERYL_SETTING_TYPE_LIST:
- beryl_setting_get_list_type(setting, &list_type);
- if (list_type == BERYL_SETTING_TYPE_STRING)
- {
- beryl_setting_value_get_value_list(value, &list_data);
- str_list = PyList_New(g_slist_length(list_data));
-
- i = 0;
- while (list_data)
- {
- beryl_setting_value_get_string(list_data->data, &str_data);
- PyList_SetItem(str_list, i, PyString_FromString(str_data));
- list_data = list_data->next;
- i++;
- }
- return str_list;
- }
- break;
- }
- Py_INCREF (Py_None);
- return Py_None;
-}
-
-static int
-set_value_for_py_type (BerylSetting *setting, PyObject *value)
-{
- printf("setting things, oh no!\n");
- gboolean bool_data;
- gint int_data;
- gdouble float_data;
- const gchar *str_data;
- BerylSettingColorValue color_data;
-
- switch (setting->type)
- {
- case BERYL_SETTING_TYPE_BOOL:
- if (!PyBool_Check(value))
- {
- return -1;
- }
- bool_data = PyInt_AsLong(value);
- beryl_setting_value_set_bool(&setting->value, &bool_data);
- break;
- case BERYL_SETTING_TYPE_INT:
- if (!PyInt_Check(value))
- {
- return -1;
- }
- int_data = (gint)PyInt_AsLong(value);
- beryl_setting_value_set_int(&setting->value, &int_data);
- break;
- case BERYL_SETTING_TYPE_FLOAT:
- if (!PyInt_Check(value))
- {
- return -1;
- }
- float_data = PyInt_AsLong(value);
- beryl_setting_value_set_float(&setting->value, &float_data);
- break;
- case BERYL_SETTING_TYPE_STRING:
- if (!PyString_Check(value))
- {
- return -1;
- }
- str_data = PyString_AsString(value);
- beryl_setting_value_set_string(&setting->value, &str_data);
- break;
- case BERYL_SETTING_TYPE_COLOR:
- if (!PyList_Check(value) && PyList_Size(value) != 4)
- {
- return -1;
- }
- if (!PyInt_Check(PyList_GetItem(value, 0)) &&
- !PyInt_Check(PyList_GetItem(value, 1)) &&
- !PyInt_Check(PyList_GetItem(value, 2)) &&
- !PyInt_Check(PyList_GetItem(value, 3)))
- {
- return -1;
- }
- color_data.color.red = PyInt_AsLong(PyList_GetItem(value, 0)) * 0xffff;
- color_data.color.green = PyInt_AsLong(PyList_GetItem(value, 1)) * 0xffff;
- color_data.color.blue = PyInt_AsLong(PyList_GetItem(value, 2)) * 0xffff;
- color_data.color.alpha = PyInt_AsLong(PyList_GetItem(value, 3)) * 0xffff;
- beryl_setting_value_set_color(&setting->value, &color_data);
- break;
- }
- return 0;
-}
-
-static PyObject *
-pyberylsettings_context_find_plugin (PyBerylSettingsContext *self, PyObject *args)
-{
- BerylSettingsPlugin *plugin;
- PyBerylSettingsPlugin *retval;
- char *name;
-
- if (!PyArg_ParseTuple (args, "s:berylsettings.Context.find_plugin", &name))
- return NULL;
-
- if ((strcmp(name, "general")==0))
- {
- name = NULL;
- }
- plugin = beryl_settings_context_find_plugin (self->context, name);
- if (plugin == NULL)
- {
- Py_INCREF (Py_None);
- return Py_None;
- }
-
- retval = pyberylsettings_plugin_wrap (plugin, self->context);
- return (PyObject *)retval;
-}
-
-static PyObject *
-pyberylsettings_context_get_plugins(PyBerylSettingsContext *self, PyObject *args)
-{
- GSList *cur;
- PyObject *tuple;
- PyBerylSettingsPlugin *plugin;
-
- cur = beryl_settings_context_get_plugins(self->context);
- tuple = PyTuple_New (g_slist_length(cur));
-
- int i = 0;
- for (;cur; cur = cur->next)
- {
- plugin = pyberylsettings_plugin_wrap(cur->data, self->context);
- PyTuple_SetItem (tuple, i, (PyObject *)plugin);
- i++;
- }
- return tuple;
-}
-
-static PyObject *
-pyberylsettings_plugin_get_name (PyBerylSettingsPlugin *self, PyObject *args)
-{
- const gchar *name = beryl_settings_plugin_get_name(self->plugin);
- if (name == NULL)
- name = "general";
- return PyString_FromString(name);
-}
-
-static PyObject *
-pyberylsettings_plugin_get_short_desc (PyBerylSettingsPlugin *self, PyObject *args)
-{
- const gchar *short_desc = beryl_settings_plugin_get_short_desc(self->plugin);
- if (short_desc == NULL)
- short_desc = "General Settings";
- return PyString_FromString(short_desc);
-}
-
-static PyObject *
-pyberylsettings_plugin_get_long_desc (PyBerylSettingsPlugin *self, PyObject *args)
-{
- const gchar *long_desc = beryl_settings_plugin_get_long_desc(self->plugin);
- if (long_desc == NULL)
- long_desc = "Settings for beryl as a whole";
- return PyString_FromString(long_desc);
-}
-
-static PyObject *
-pyberylsettings_plugin_get_setting_info (PyBerylSettingsPlugin *self, PyObject *args)
-{
- gchar *name;
- const gchar *short_desc;
- const gchar *long_desc;
- PyObject *tuple;
- BerylSetting *setting;
- gboolean is_screen = 0;
-
- if (!PyArg_ParseTuple (args, "s:berylsettings.Context.find_plugin", &name))
- return NULL;
-
- if (g_str_has_suffix(name, "_for_screen"))
- {
- is_screen = 1;
- g_strlcpy(name, name, sizeof(name)-11);
- }
- setting = beryl_settings_plugin_find_setting(self->plugin, name, is_screen);
- tuple = PyTuple_New(2);
- short_desc = beryl_setting_get_short_desc(setting);
- long_desc = beryl_setting_get_long_desc(setting);
- PyTuple_SetItem(tuple, 0, PyString_FromString(short_desc));
- PyTuple_SetItem(tuple, 1, PyString_FromString(long_desc));
- return tuple;
-}
-
-static PyObject *
-pyberylsettings_plugin_get_setting_type (PyBerylSettingsPlugin *self, PyObject *args)
-{
- PyObject *retval;
- gchar *name;
- BerylSetting *setting;
- gboolean is_screen = 0;
-
- if (!PyArg_ParseTuple (args, "s:berylsettings.Context.find_plugin", &name))
- return NULL;
-
- if (g_str_has_suffix(name, "_for_screen"))
- {
- is_screen = 1;
- g_strlcpy(name, name, sizeof(name)-11);
- }
- setting = beryl_settings_plugin_find_setting(self->plugin, name, is_screen);
- switch (setting->type)
- {
- case BERYL_SETTING_TYPE_BOOL:
- retval = lookup_item_type_str("TYPE_BOOL");
- break;
- case BERYL_SETTING_TYPE_INT:
- retval = lookup_item_type_str("TYPE_INT");
- break;
- case BERYL_SETTING_TYPE_FLOAT:
- retval = lookup_item_type_str("TYPE_FLOAT");
- break;
- case BERYL_SETTING_TYPE_STRING:
- retval = lookup_item_type_str("TYPE_STRING");
- break;
- case BERYL_SETTING_TYPE_COLOR:
- retval = lookup_item_type_str("TYPE_COLOR");
- break;
- case BERYL_SETTING_TYPE_BINDING:
- retval = lookup_item_type_str("TYPE_BINDING");
- break;
- case BERYL_SETTING_TYPE_LIST:
- retval = lookup_item_type_str("TYPE_LIST");
- break;
- }
- Py_INCREF (retval);
- return retval;
-}
-
-static PyObject *
-pyberylsettings_create_context (PyObject *self, PyObject *args)
-{
- BerylSettingsContext *context;
- PyBerylSettingsContext *retval;
-
- if (!PyArg_ParseTuple (args, ":berylsettings.create_context"))
- return NULL;
-
- if (!(context = beryl_settings_context_new()))
- {
- Py_INCREF (Py_None);
- return Py_None;
- }
-
- beryl_settings_context_read(context);
- retval = pyberylsettings_context_wrap (context);
- return (PyObject *) retval;
-}
-
-static struct PyMethodDef pyberylsettings_context_methods[] =
-{
- {"find_plugin", (PyCFunction)pyberylsettings_context_find_plugin, METH_VARARGS},
- {"get_plugins", (PyCFunction)pyberylsettings_context_get_plugins, METH_VARARGS},
- {NULL, NULL, 0}
-};
-
-static struct PyMethodDef pyberylsettings_plugin_methods[] =
-{
- {"get_name", (PyCFunction)pyberylsettings_plugin_get_name, METH_VARARGS},
- {"get_short_desc", (PyCFunction)pyberylsettings_plugin_get_short_desc, METH_VARARGS},
- {"get_long_desc", (PyCFunction)pyberylsettings_plugin_get_long_desc, METH_VARARGS},
- {"get_setting_info", (PyCFunction)pyberylsettings_plugin_get_setting_info, METH_VARARGS},
- {"get_setting_type", (PyCFunction)pyberylsettings_plugin_get_setting_type, METH_VARARGS},
- {NULL, NULL, 0}
-};
-
-static PyMethodDef pyberylsettings_classes[] = {
- {"create_context", (PyCFunction)pyberylsettings_create_context, METH_VARARGS},
- {NULL, NULL, 0}
-};
-
-static PyTypeObject PyBerylSettingsContext_Type =
-{
- PyObject_HEAD_INIT(NULL) 0, /* ob_size */
- "Context", /* tp_name */
- sizeof (PyBerylSettingsContext), /* tp_basicsize */
- 0, /* tp_itemsize */
- (destructor)pyberylsettings_context_dealloc, /* tp_dealloc */
- (printfunc)0,
- (getattrfunc)0,
- (setattrfunc)0,
- (cmpfunc)0,
- (reprfunc)0,
- 0,
- 0,
- 0,
- (hashfunc)0,
- (ternaryfunc)0,
- (reprfunc)0,
- (getattrofunc)pyberylsettings_context_getattro,
- (setattrofunc)0,
- 0,
- Py_TPFLAGS_DEFAULT,
- NULL,
- (traverseproc)0,
- (inquiry)0,
- (richcmpfunc)0,
- 0,
- (getiterfunc)0,
- (iternextfunc)0,
- pyberylsettings_context_methods
-};
-
-static PyTypeObject PyBerylSettingsPlugin_Type =
-{
- PyObject_HEAD_INIT(NULL) 0, /* ob_size */
- "Plugin", /* tp_name */
- sizeof (PyBerylSettingsPlugin), /* tp_basicsize */
- 0, /* tp_itemsize */
- (destructor)PyObject_DEL, /* tp_dealloc */
- 0,
- (getattrfunc)0,
- (setattrfunc)0,
- (cmpfunc)0,
- (reprfunc)0,
- 0,
- 0,
- 0,
- (hashfunc)0,
- (ternaryfunc)0,
- (reprfunc)0,
- (getattrofunc)pyberylsettings_plugin_getattro,
- (setattrofunc)pyberylsettings_plugin_setattro,
- 0,
- Py_TPFLAGS_DEFAULT,
- NULL,
- (traverseproc)0,
- (inquiry)0,
- (richcmpfunc)0,
- 0,
- (getiterfunc)0,
- (iternextfunc)0,
- pyberylsettings_plugin_methods
-};
-
-static int
-beryllist_init(PyBerylSettingsList *self, PyObject *args, PyObject *kwds)
-{
- if (PyList_Type.tp_init((PyObject *)self, args, kwds) < 0)
- return -1;
- return 0;
-}
-
-static PyTypeObject PyBerylSettingsList_Type =
-{
- PyObject_HEAD_INIT(NULL) 0,
- "BerylList",
- sizeof (PyBerylSettingsList),
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- (setattrofunc)pyberylsettings_list_setattro,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- &PyList_Type,
- 0, 0, 0, 0,
- (initproc)beryllist_init
-};
-
-static PyObject *
-pyberylsettings_context_create (PyObject * self, PyObject * args)
-{
- if (!PyArg_NoArgs (args))
- return NULL;
-
- PyBerylSettingsContext *retval;
- retval = PyObject_NEW (PyBerylSettingsContext, &PyBerylSettingsContext_Type);
- if (retval == NULL)
- return NULL;
-
- retval->context = NULL;
- return (PyObject *)retval;
-}
-
-static void
-pyberylsettings_context_dealloc (PyBerylSettingsContext *self)
-{
- beryl_settings_context_destroy(self->context);
- PyObject_DEL (self);
-}
-
-static PyBerylSettingsContext *
-pyberylsettings_context_wrap (BerylSettingsContext *context)
-{
- PyBerylSettingsContext *retval;
- retval = (PyBerylSettingsContext *) PyObject_NEW (PyBerylSettingsContext,
- &PyBerylSettingsContext_Type);
- if (!retval)
- return NULL;
- retval->context = context;
- return retval;
-}
-
-static PyObject *
-pyberylsettings_context_getattro (PyBerylSettingsContext *self, PyObject *py_attr)
-{
- if (PyString_Check (py_attr))
- {
- char *attr;
- attr = PyString_AsString (py_attr);
- if (!strcmp (attr, "__members__"))
- {
- return Py_BuildValue ("[s]", "plugins");
- }
- else if (!strcmp (attr, "plugins"))
- {
- return (PyObject *)pyberylsettings_context_get_plugins(self, NULL);
- }
- }
- return PyObject_GenericGetAttr((PyObject *)self, py_attr);
-}
-
-static PyBerylSettingsPlugin *
-pyberylsettings_plugin_wrap (BerylSettingsPlugin *plugin, BerylSettingsContext *context)
-{
- int c = 0;
- GSList *cur;
- BerylSetting *setting;
- const gchar *name;
- PyObject *tuple;
- PyBerylSettingsPlugin *retval;
- retval = (PyBerylSettingsPlugin *) PyObject_NEW (PyBerylSettingsPlugin,
- &PyBerylSettingsPlugin_Type);
- if (!retval)
- return NULL;
- retval->plugin = plugin;
- retval->context = context;
-
- cur = beryl_settings_plugin_get_settings(plugin);
- retval->setting_names = PyList_New (g_slist_length(cur));
-
- c = 0;
- for (;cur; cur = cur->next)
- {
- setting = cur->data;
- name = beryl_setting_get_name(setting);
- tuple = PyTuple_New(2);
- PyTuple_SetItem(tuple, 0, PyString_FromString(name));
- PyTuple_SetItem(tuple, 1, PyLong_FromLong(setting->is_screen));
- PyList_SetItem (retval->setting_names, c, tuple);
- c++;
- }
- return retval;
-}
-
-static PyObject *
-pyberylsettings_plugin_getattro (PyBerylSettingsPlugin *self, PyObject *py_attr)
-{
- int size = PyList_Size(self->setting_names);
- PyObject *py_str;
- gchar *name;
- gchar *attr_name;
- BerylSetting *setting;
- BerylSettingValue *value;
- PyObject *list;
- PyObject *tmp;
- gboolean is_screen;
-
- if (PyString_Check (py_attr))
- {
- char *attr;
- attr = PyString_AsString (py_attr);
- if (!strcmp (attr, "__members__"))
- {
- list = PyList_New(size);
- int i = 0;
- while (i < size)
- {
- tmp = PyList_GetItem(self->setting_names, i);
- py_str = PyTuple_GetItem(tmp, 0);
- name = PyString_AsString(py_str);
- is_screen = PyLong_AsLong(PyTuple_GetItem(tmp, 1));
- name = is_screen ? g_strconcat(name, "_for_screen", NULL) : name;
- PyList_SetItem(list, i, PyString_FromString(name));
- i++;
- }
- return list;
- }
- else if (!g_str_has_prefix(attr, "__"))
- {
- is_screen = 0;
- if (g_str_has_suffix(attr, "_for_screen"))
- {
- is_screen = 1;
- g_strlcpy(attr, attr, sizeof(attr)-11);
- }
- setting = beryl_settings_plugin_find_setting(self->plugin, attr, is_screen);
- if (setting != NULL)
- {
- value = &(setting->value);
- if (value != NULL)
- {
- return get_py_type_for_value(value, setting->type);
- }
- }
- }
- }
- return PyObject_GenericGetAttr((PyObject *)self, py_attr);
-}
-
-static int
-pyberylsettings_plugin_setattro (PyBerylSettingsPlugin *self, PyObject *py_attr, PyObject *value)
-{
- char *attr;
- gboolean is_screen = 0;
- BerylSetting *setting;
- if (PyString_Check (py_attr))
- {
- attr = PyString_AsString (py_attr);
- if (g_str_has_suffix(attr, "_for_screen"))
- {
- is_screen = 1;
- g_strlcpy(attr, attr, sizeof(attr)-11);
- }
- setting = beryl_settings_plugin_find_setting(self->plugin, attr, is_screen);
- if (setting != NULL)
- {
- if (set_value_for_py_type(setting, value) == 0)
- {
- //write out settings and reload beryl
- beryl_settings_context_write(self->context);
- beryl_settings_send_reload_signal();
- return 0;
- }
- }
- }
- return PyObject_GenericSetAttr((PyObject *)self, py_attr, value);
-}
-
-static int
-pyberylsettings_list_setattro (PyBerylSettingsList *self, PyObject *py_attr, PyObject *value)
-{
- printf("called\n");
- return 0;
-}
-
-DL_EXPORT (void)
-initberylsettings (void)
-{
- PyObject *mod;
-
- mod = Py_InitModule3 ("berylsettings", pyberylsettings_classes, 0);
-
- REGISTER_TYPE (PyBerylSettingsContext_Type, "Context");
- REGISTER_TYPE (PyBerylSettingsPlugin_Type, "Plugin");
- REGISTER_TYPE (PyBerylSettingsList_Type, "BerylList");
-
- PyModule_AddIntConstant (mod, "TYPE_BOOL", BERYL_SETTING_TYPE_BOOL);
- PyModule_AddIntConstant (mod, "TYPE_INT", BERYL_SETTING_TYPE_INT);
- PyModule_AddIntConstant (mod, "TYPE_FLOAT", BERYL_SETTING_TYPE_FLOAT);
- PyModule_AddIntConstant (mod, "TYPE_STRING", BERYL_SETTING_TYPE_STRING);
- PyModule_AddIntConstant (mod, "TYPE_COLOR", BERYL_SETTING_TYPE_COLOR);
- PyModule_AddIntConstant (mod, "TYPE_BINDING", BERYL_SETTING_TYPE_BINDING);
- PyModule_AddIntConstant (mod, "TYPE_LIST", BERYL_SETTING_TYPE_LIST);
-}
Added: trunk/beryl-python/src/berylsettings.pyx
===================================================================
--- trunk/beryl-python/src/berylsettings.pyx (rev 0)
+++ trunk/beryl-python/src/berylsettings.pyx 2006-12-04 02:43:01 UTC (rev 1523)
@@ -0,0 +1,466 @@
+
+cdef extern from "X11/Xlib.h":
+ char * XKeysymToString(int)
+
+cdef extern from "glib.h":
+ ctypedef char gchar
+ ctypedef void* gpointer
+ ctypedef int gint
+ ctypedef gint gboolean
+ ctypedef double gdouble
+ ctypedef struct GSList:
+ gpointer data
+ GSList *next
+ void g_free(void*)
+
+cdef extern from "Python.h":
+ gchar *PyString_AsString(object)
+ object PyString_FromString(gchar*)
+
+cdef extern from "beryl-settings.h":
+ ctypedef enum BerylSettingType:
+ BERYL_SETTING_TYPE_BOOL
+ BERYL_SETTING_TYPE_INT
+ BERYL_SETTING_TYPE_FLOAT
+ BERYL_SETTING_TYPE_STRING
+ BERYL_SETTING_TYPE_COLOR
+ BERYL_SETTING_TYPE_BINDING
+ BERYL_SETTING_TYPE_LIST
+ BERYL_SETTING_TYPE_COUNT
+
+ ctypedef struct BerylSettingsContext
+ ctypedef struct BerylSettingsPlugin
+
+ ctypedef union _BerylSettingInfo
+ ctypedef struct BerylIntSettingInfo:
+ gint min
+ gint max
+ ctypedef struct BerylFloatSettingInfo:
+ gdouble min
+ gdouble max
+ gdouble precision
+ ctypedef struct BerylStringSettingInfo:
+ GSList * allowed_values
+ GSList * raw_values
+ ctypedef struct BerylBindingSettingInfo:
+ gboolean key
+ gboolean button
+ gboolean bell
+ gboolean edge
+ ctypedef struct BerylBindingSettingArrayInfo:
+ gboolean array[4]
+ ctypedef struct BerylListSettingInfo:
+ BerylSettingType list_of_type
+ _BerylSettingInfo * list_of_info
+ ctypedef union BerylSettingInfo:
+ BerylIntSettingInfo for_int
+ BerylFloatSettingInfo for_float
+ BerylStringSettingInfo for_string
+ BerylBindingSettingInfo for_bind
+ BerylBindingSettingArrayInfo for_bind_as_array
+ BerylListSettingInfo for_list
+
+ ctypedef struct BerylSetting
+ ctypedef struct BerylSettingColorValueColor:
+ gint red
+ gint green
+ gint blue
+ gint alpha
+ ctypedef struct BerylSettingColorValueArray:
+ gint array[4]
+ ctypedef union BerylSettingColorValue:
+ BerylSettingColorValueColor color
+ BerylSettingColorValueArray array
+ ctypedef struct BerylSettingValueBindingIsSetValue:
+ gboolean key
+ gboolean button
+ ctypedef struct BerylSettingValueBindingIsSetArray:
+ gboolean array[2]
+ ctypedef union BerylSettingValueBindingIsSet:
+ BerylSettingValueBindingIsSetValue value
+ BerylSettingValueBindingIsSetArray array
+ ctypedef struct BerylSettingBindingValue:
+ BerylSettingValueBindingIsSet enabled
+ gint button
+ gint button_mod_mask
+ gint keysym
+ gint key_mod_mask
+ gboolean on_bell
+ gint edge_mask
+ ctypedef union BerylSettingValueUnion:
+ gboolean as_bool
+ gint as_int
+ gdouble as_float
+ gchar * as_string
+ BerylSettingBindingValue as_binding
+ BerylSettingColorValue as_color
+ GSList * as_list
+ ctypedef struct BerylSettingValue:
+ BerylSettingValueUnion value
+ BerylSetting * parent
+ gboolean is_list_child
+
+ ctypedef struct BerylSetting:
+ BerylSettingType type
+ gboolean is_screen
+ BerylSettingInfo info
+ gchar * name
+ gchar * short_desc
+ gchar * long_desc
+ gchar * group
+ gchar * subGroup
+ gchar * displayHints
+ BerylSettingValue value
+ BerylSettingValue default_value
+ gboolean is_default
+ BerylSettingsPlugin * parent
+ gpointer private_ptr
+
+ gboolean beryl_settings_send_reload_signal()
+ BerylSettingsContext * beryl_settings_context_new()
+ void beryl_settings_context_destroy(BerylSettingsContext *)
+ void beryl_settings_context_write(BerylSettingsContext *)
+ BerylSettingsPlugin * beryl_settings_context_find_plugin(
+ BerylSettingsContext *, gchar *)
+ GSList * beryl_settings_context_get_plugins(BerylSettingsContext *)
+
+ gchar * beryl_settings_plugin_get_name(BerylSettingsPlugin *)
+ gchar * beryl_settings_plugin_get_short_desc(BerylSettingsPlugin *)
+ gchar * beryl_settings_plugin_get_long_desc(BerylSettingsPlugin *)
+ GSList * beryl_settings_plugin_get_settings(BerylSettingsPlugin *)
+ BerylSetting * beryl_settings_plugin_find_setting(
+ BerylSettingsPlugin *, gchar *, gboolean)
+
+ gchar * beryl_setting_get_name(BerylSetting *)
+ gchar * beryl_setting_get_short_desc(BerylSetting *)
+ gchar * beryl_setting_get_long_desc(BerylSetting *)
+ gboolean beryl_setting_get_list_type(BerylSetting *, BerylSettingType *)
+ gboolean beryl_setting_get_can_set_button(BerylSetting *, gboolean *)
+ gboolean beryl_setting_get_can_set_key(BerylSetting *, gboolean *)
+ gboolean beryl_setting_get_can_set_edgemask(BerylSetting *, gboolean *)
+ gboolean beryl_setting_get_can_set_bell(BerylSetting *, gboolean *)
+
+ gboolean beryl_setting_value_get_bool(BerylSettingValue *, gboolean *)
+ gboolean beryl_setting_value_get_int(BerylSettingValue *, gint *)
+ gboolean beryl_setting_value_get_float(BerylSettingValue *, gdouble *)
+ gboolean beryl_setting_value_get_string(BerylSettingValue *, gchar **)
+ gboolean beryl_setting_value_get_color(BerylSettingValue *, BerylSettingColorValue *)
+ gboolean beryl_setting_value_get_button_enabled(BerylSettingValue *, gboolean *)
+ gboolean beryl_setting_value_get_buttonmods(BerylSettingValue *, gint *)
+ gboolean beryl_setting_value_get_button(BerylSettingValue *, gint *)
+ gboolean beryl_setting_value_get_key_enabled(BerylSettingValue *, gboolean *)
+ gboolean beryl_setting_value_get_keymods(BerylSettingValue *, gint *)
+ gboolean beryl_setting_value_get_keysym(BerylSettingValue *, gint *)
+ gboolean beryl_setting_value_get_edgemask(BerylSettingValue *, gint *)
+ gboolean beryl_setting_value_get_bell(BerylSettingValue *, gboolean *)
+ gboolean beryl_setting_value_get_value_list(BerylSettingValue *, GSList **)
+
+ gboolean beryl_setting_value_set_bool(BerylSettingValue *, gboolean *)
+ gboolean beryl_setting_value_set_int(BerylSettingValue *, gint *)
+ gboolean beryl_setting_value_set_float(BerylSettingValue *, gdouble *)
+ gboolean beryl_setting_value_set_string(BerylSettingValue *, gchar **)
+ gboolean beryl_setting_value_set_color(BerylSettingValue *, BerylSettingColorValue *)
+
+ unsigned int beryl_settings_get_mods_and_endptr(gchar *, gchar **)
+ gchar * beryl_settings_mods_to_string(unsigned int)
+
+
+edges = (
+ 'Left',
+ 'Right',
+ 'Top',
+ 'Bottom',
+ 'TopLeft',
+ 'TopRight',
+ 'BottomLeft',
+ 'BottomRight'
+)
+
+cdef object get_py_value_for_setting(BerylSetting *setting):
+ cdef gboolean bool_data
+ cdef gint int_data
+ cdef gdouble float_data
+ cdef gchar *str_data
+ cdef GSList *list_data
+ cdef BerylSettingColorValue color_data
+ cdef BerylSettingType list_type
+ cdef BerylSettingType type
+ type = setting.type
+
+ if type == BERYL_SETTING_TYPE_BOOL:
+ if beryl_setting_value_get_bool(&setting.value, &bool_data):
+ return bool_data
+ if type == BERYL_SETTING_TYPE_INT:
+ if beryl_setting_value_get_int(&setting.value, &int_data):
+ return int_data
+ if type == BERYL_SETTING_TYPE_FLOAT:
+ if beryl_setting_value_get_float(&setting.value, &float_data):
+ return float_data
+ if type == BERYL_SETTING_TYPE_STRING:
+ if beryl_setting_value_get_string(&setting.value, &str_data):
+ return PyString_FromString(str_data)
+ if type == BERYL_SETTING_TYPE_COLOR:
+ if beryl_setting_value_get_color(&setting.value, &color_data):
+ # set red, green, blue, and alpha to list
+ color_list = []
+ color_list.append(<gdouble>color_data.array.array[0]/0xffff)
+ color_list.append(<gdouble>color_data.array.array[1]/0xffff)
+ color_list.append(<gdouble>color_data.array.array[2]/0xffff)
+ color_list.append(<gdouble>color_data.array.array[3]/0xffff)
+ return color_list
+ if type == BERYL_SETTING_TYPE_BINDING:
+ binding_list = [None, None, None, None]
+ if beryl_setting_get_can_set_button(setting, &bool_data) and bool_data:
+ beryl_setting_value_get_button_enabled(&setting.value, &bool_data)
+ if not bool_data:
+ binding_list[0] = 'Disabled'
+ else:
+ beryl_setting_value_get_buttonmods(&setting.value, &int_data)
+ binding_string = PyString_FromString(beryl_settings_mods_to_string(int_data))
+ beryl_setting_value_get_button(&setting.value, &int_data)
+ binding_string = binding_string + 'Button' + str(int_data)
+ binding_list[0] = binding_string
+ if beryl_setting_get_can_set_key(setting, &bool_data) and bool_data:
+ beryl_setting_value_get_key_enabled(&setting.value, &bool_data)
+ if not bool_data:
+ binding_list[1] = 'Disabled'
+ else:
+ beryl_setting_value_get_keymods(&setting.value, &int_data)
+ binding_string = PyString_FromString(beryl_settings_mods_to_string(int_data))
+ beryl_setting_value_get_keysym(&setting.value, &int_data)
+ if not XKeysymToString(int_data):
+ binding_string = binding_string + 'None'
+ else:
+ binding_string = binding_string + PyString_FromString(XKeysymToString(int_data))
+ binding_list[1] = binding_string
+ if beryl_setting_get_can_set_edgemask(setting, &bool_data) and bool_data:
+ beryl_setting_value_get_edgemask(&setting.value, &int_data)
+ if not int_data:
+ binding_list[2] = 'Disabled'
+ else:
+ i = 0
+ edge_list = []
+ while i < SCREEN_EDGE_NUM:
+ if edgemask & (1<<i):
+ edge_list.append(edges[i])
+ binding_list[2] = edge_list
+ if beryl_setting_get_can_set_bell(setting, &bool_data) and bool_data:
+ beryl_setting_value_get_bell(&setting.value, &bool_data)
+ binding_list[3] = bool_data
+ return binding_list
+ if type == BERYL_SETTING_TYPE_LIST:
+ beryl_setting_get_list_type(setting, &list_type)
+ if (list_type == BERYL_SETTING_TYPE_STRING):
+ beryl_setting_value_get_value_list(&setting.value, &list_data)
+ str_list = []
+
+ while list_data:
+ beryl_setting_value_get_string(<BerylSettingValue *>list_data.data, &str_data)
+ str_list.append(PyString_FromString(str_data))
+ list_data = list_data.next
+ return str_list
+ return None
+
+cdef object set_setting_for_py_value (BerylSetting *setting, object value):
+ cdef gboolean bool_data
+ cdef gint int_data
+ cdef gdouble float_data
+ cdef gchar *str_data
+ cdef BerylSettingColorValue color_data
+ cdef BerylSettingType setting_type
+ setting_type = setting.type
+
+ if setting_type == BERYL_SETTING_TYPE_BOOL:
+ if not type(value) == type(False):
+ return False
+ bool_data = value
+ beryl_setting_value_set_bool(&setting.value, &bool_data)
+ if setting_type == BERYL_SETTING_TYPE_INT:
+ if not type(value) == type(1):
+ return False
+ int_data = value
+ beryl_setting_value_set_int(&setting.value, &int_data)
+ if setting_type == BERYL_SETTING_TYPE_FLOAT:
+ if not type(value) in (type(1.0), type(1)):
+ return False
+ float_data = value
+ beryl_setting_value_set_float(&setting.value, &float_data)
+ if setting_type == BERYL_SETTING_TYPE_STRING:
+ if not type(value) == type(''):
+ return False
+ str_data = PyString_AsString(value)
+ beryl_setting_value_set_string(&setting.value, &str_data)
+ if setting_type == BERYL_SETTING_TYPE_COLOR:
+ if not type(value) == type([]) and not len(value) == 4:
+ return False
+ for foo in value:
+ if not type(foo) in (type(1.0), type(1)):
+ return False
+ color_data.color.red = value[0] * 0xffff
+ color_data.color.green = value[1] * 0xffff
+ color_data.color.blue = value[2] * 0xffff
+ color_data.color.alpha = value[3] * 0xffff
+ beryl_setting_value_set_color(&setting.value, &color_data)
+ return True
+
+class PluginNotFoundException(Exception):
+ def __init__(self, name):
+ self.name = name
+
+ def __str__(self):
+ print ": Plugin '%s' not found" % self.name
+
+cdef class Plugin:
+ cdef BerylSettingsPlugin *plugin
+ cdef BerylSettingsContext *context
+
+ def __new__(self, from_internal=False):
+ if not from_internal:
+ self.plugin = NULL
+ raise TypeError("Cannot create 'berylsettings.Plugin' instances")
+
+ property name:
+ def __get__(self):
+ cdef gchar *name
+ name = <gchar*>beryl_settings_plugin_get_name(self.plugin)
+ if name == NULL:
+ name = 'general'
+ return PyString_FromString(name)
+
+ property short_desc:
+ def __get__(self):
+ cdef gchar *short_desc
+ short_desc = <gchar*>beryl_settings_plugin_get_short_desc(self.plugin)
+ if short_desc == NULL:
+ short_desc = 'General Settings'
+ return PyString_FromString(short_desc)
+
+ property long_desc:
+ def __get__(self):
+ cdef gchar *long_desc
+ long_desc = <gchar*>beryl_settings_plugin_get_long_desc(self.plugin)
+ if long_desc == NULL:
+ long_desc = 'Settings for Beryl as a whole'
+ return PyString_FromString(long_desc)
+
+ property settings:
+ def __get__(self):
+ settings = []
+ name = ''
+ cdef int i
+ cdef GSList *setting_list
+ cdef gchar *c_name
+ cdef BerylSetting *setting
+ setting_list = beryl_settings_plugin_get_settings(self.plugin)
+ i = 0
+ while setting_list != NULL:
+ setting = <BerylSetting *>setting_list.data
+ c_name = <gchar*>beryl_setting_get_name(setting)
+ name = PyString_FromString(c_name)
+ if setting.is_screen:
+ name = name + '_for_screen'
+ settings.append(name)
+ i = i + 1
+ setting_list = setting_list.next
+ return tuple(settings)
+
+ def getSetting(self, name):
+ cdef BerylSetting *setting
+ cdef gboolean is_screen
+ cdef gchar *c_name
+ is_screen = 0
+ if name.endswith('_for_screen'):
+ is_screen = 1
+ name = name.split('_for_screen')[0]
+ c_name = PyString_AsString(name)
+ setting = beryl_settings_plugin_find_setting(self.plugin, c_name, is_screen)
+ return get_py_value_for_setting(setting)
+
+ def getSettingType(self, name):
+ cdef BerylSetting *setting
+ cdef gboolean is_screen
+ cdef gchar *c_name
+ is_screen = 0
+ if name.endswith('_for_screen'):
+ is_screen = 1
+ name = name.split('_for_screen')[0]
+ c_name = PyString_AsString(name)
+ setting = beryl_settings_plugin_find_setting(self.plugin, c_name, is_screen)
+ return setting.type
+
+ def getSettingInfo(self, name):
+ cdef BerylSetting *setting
+ cdef gboolean is_screen
+ cdef gchar *c_name
+ cdef gchar *short_desc
+ cdef gchar *long_desc
+ is_screen = 0
+ if name.endswith('_for_screen'):
+ is_screen = 1
+ name = name.split('_for_screen')[0]
+ c_name = PyString_AsString(name)
+ setting = beryl_settings_plugin_find_setting(self.plugin, c_name, is_screen)
+ short_desc = <gchar *>beryl_setting_get_short_desc(setting)
+ long_desc = <gchar *>beryl_setting_get_long_desc(setting)
+ return (PyString_FromString(short_desc), PyString_FromString(long_desc))
+
+ def setSetting(self, name, value):
+ cdef BerylSetting *setting
+ cdef gboolean is_screen
+ cdef gchar *c_name
+ cdef gchar *short_desc
+ cdef gchar *long_desc
+ is_screen = 0
+ if name.endswith('_for_screen'):
+ is_screen = 1
+ name = name.split('_for_screen')[0]
+ c_name = PyString_AsString(name)
+ setting = beryl_settings_plugin_find_setting(self.plugin, c_name, is_screen)
+ if set_setting_for_py_value(setting, value):
+ beryl_settings_context_write(self.context)
+ beryl_settings_send_reload_signal()
+
+cdef class Context:
+ cdef BerylSettingsContext *context
+
+ def __new__(self, from_internal=False):
+ if not from_internal:
+ self.context = NULL
+ raise TypeError("Cannot create 'berylsettings.Context' instances")
+ self.context = beryl_settings_context_new()
+
+ def __dealloc__(self):
+ if self.context != NULL:
+ beryl_settings_context_destroy(self.context)
+
+ def getPlugin(self, name):
+ cdef BerylSettingsPlugin *c_plugin
+ cdef gchar *c_name
+ c_name = PyString_AsString(name)
+ c_plugin = beryl_settings_context_find_plugin(self.context, c_name)
+ if c_plugin == NULL:
+ raise PluginNotFoundException(name)
+ cdef Plugin plugin
+ plugin = Plugin(True)
+ plugin.plugin = c_plugin
+ plugin.context = self.context
+ return plugin
+
+ property plugins:
+ def __get__(self):
+ plugins = []
+ cdef int i
+ cdef GSList *plugin_list
+ cdef Plugin plugin
+ plugin_list = beryl_settings_context_get_plugins(self.context)
+ i = 0
+ while plugin_list != NULL:
+ plugin = Plugin(True)
+ plugin.plugin = <BerylSettingsPlugin *>plugin_list.data
+ plugins.append(plugin)
+ i = i + 1
+ plugin_list = plugin_list.next
+ return tuple(plugins)
+
+def create_context():
+ return Context(True)
More information about the commits
mailing list