summaryrefslogtreecommitdiff
path: root/python/matemenu.c
diff options
context:
space:
mode:
Diffstat (limited to 'python/matemenu.c')
-rw-r--r--python/matemenu.c1948
1 files changed, 0 insertions, 1948 deletions
diff --git a/python/matemenu.c b/python/matemenu.c
deleted file mode 100644
index 71d831b..0000000
--- a/python/matemenu.c
+++ /dev/null
@@ -1,1948 +0,0 @@
-/*
- * Copyright (C) 2005 Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <config.h>
-
-#include <Python.h>
-#include <matemenu-tree.h>
-
-typedef struct {
- PyObject_HEAD
- MateMenuTree* tree;
- GSList* callbacks;
-} PyMateMenuTree;
-
-typedef struct {
- PyObject* tree;
- PyObject* callback;
- PyObject* user_data;
-} PyMateMenuTreeCallback;
-
-typedef struct {
- PyObject_HEAD
- MateMenuTreeItem* item;
-} PyMateMenuTreeItem;
-
-typedef PyMateMenuTreeItem PyMateMenuTreeDirectory;
-typedef PyMateMenuTreeItem PyMateMenuTreeEntry;
-typedef PyMateMenuTreeItem PyMateMenuTreeSeparator;
-typedef PyMateMenuTreeItem PyMateMenuTreeHeader;
-typedef PyMateMenuTreeItem PyMateMenuTreeAlias;
-
-static PyMateMenuTree* pymatemenu_tree_wrap(MateMenuTree* tree);
-static PyMateMenuTreeDirectory* pymatemenu_tree_directory_wrap(MateMenuTreeDirectory* directory);
-static PyMateMenuTreeEntry* pymatemenu_tree_entry_wrap(MateMenuTreeEntry* entry);
-static PyMateMenuTreeSeparator* pymatemenu_tree_separator_wrap(MateMenuTreeSeparator* separator);
-static PyMateMenuTreeHeader* pymatemenu_tree_header_wrap(MateMenuTreeHeader* header);
-static PyMateMenuTreeAlias* pymatemenu_tree_alias_wrap(MateMenuTreeAlias* alias);
-
-static inline PyObject* lookup_item_type_str(const char* item_type_str)
-{
- PyObject* module;
-
- module = PyDict_GetItemString(PyImport_GetModuleDict(), "matemenu");
-
- return PyDict_GetItemString(PyModule_GetDict(module), item_type_str);
-}
-
-static void pymatemenu_tree_item_dealloc(PyMateMenuTreeItem* self)
-{
- if (self->item != NULL)
- {
- matemenu_tree_item_set_user_data(self->item, NULL, NULL);
- matemenu_tree_item_unref(self->item);
- self->item = NULL;
- }
-
- PyObject_DEL (self);
-}
-
-static PyObject* pymatemenu_tree_item_get_type(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeItem* item;
- PyObject* retval;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Item.get_type"))
- {
- return NULL;
- }
- }
-
- item = (PyMateMenuTreeItem*) self;
-
- switch (matemenu_tree_item_get_type(item->item))
- {
- case MATEMENU_TREE_ITEM_DIRECTORY:
- retval = lookup_item_type_str("TYPE_DIRECTORY");
- break;
-
- case MATEMENU_TREE_ITEM_ENTRY:
- retval = lookup_item_type_str("TYPE_ENTRY");
- break;
-
- case MATEMENU_TREE_ITEM_SEPARATOR:
- retval = lookup_item_type_str("TYPE_SEPARATOR");
- break;
-
- case MATEMENU_TREE_ITEM_HEADER:
- retval = lookup_item_type_str("TYPE_HEADER");
- break;
-
- case MATEMENU_TREE_ITEM_ALIAS:
- retval = lookup_item_type_str("TYPE_ALIAS");
- break;
-
- default:
- g_assert_not_reached();
- break;
- }
-
- Py_INCREF(retval);
-
- return retval;
-}
-
-static PyObject* pymatemenu_tree_item_get_parent(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeItem* item;
- MateMenuTreeDirectory* parent;
- PyMateMenuTreeDirectory* retval;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Item.get_parent"))
- {
- return NULL;
- }
- }
-
- item = (PyMateMenuTreeItem*) self;
-
- parent = matemenu_tree_item_get_parent(item->item);
-
- if (parent == NULL)
- {
- Py_INCREF(Py_None);
-
- return Py_None;
- }
-
- retval = pymatemenu_tree_directory_wrap(parent);
-
- matemenu_tree_item_unref(parent);
-
- return (PyObject*) retval;
-}
-
-static struct PyMethodDef pymatemenu_tree_item_methods[] = {
- {"get_type", pymatemenu_tree_item_get_type, METH_VARARGS},
- {"get_parent", pymatemenu_tree_item_get_parent, METH_VARARGS},
- {NULL, NULL, 0}
-};
-
-static PyTypeObject PyMateMenuTreeItem_Type = {
- PyObject_HEAD_INIT(NULL)
- 0, /* ob_size */
- "matemenu.Item", /* tp_name */
- sizeof(PyMateMenuTreeItem), /* tp_basicsize */
- 0, /* tp_itemsize */
- (destructor) pymatemenu_tree_item_dealloc, /* tp_dealloc */
- (printfunc) 0, /* tp_print */
- (getattrfunc) 0, /* tp_getattr */
- (setattrfunc) 0, /* tp_setattr */
- (cmpfunc) 0, /* tp_compare */
- (reprfunc) 0, /* tp_repr */
- 0, /* tp_as_number */
- 0, /* tp_as_sequence */
- 0, /* tp_as_mapping */
- (hashfunc) 0, /* tp_hash */
- (ternaryfunc) 0, /* tp_call */
- (reprfunc) 0, /* tp_str */
- (getattrofunc) 0, /* tp_getattro */
- (setattrofunc) 0, /* tp_setattro */
- 0, /* tp_as_buffer */
- Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
- NULL, /* Documentation string */
- (traverseproc) 0, /* tp_traverse */
- (inquiry) 0, /* tp_clear */
- (richcmpfunc) 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- (getiterfunc) 0, /* tp_iter */
- (iternextfunc) 0, /* tp_iternext */
- pymatemenu_tree_item_methods, /* tp_methods */
- 0, /* tp_members */
- 0, /* tp_getset */
- (PyTypeObject*) 0, /* tp_base */
- (PyObject*) 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- (initproc) 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
- 0, /* tp_free */
- (inquiry) 0, /* tp_is_gc */
- (PyObject*) 0, /* tp_bases */
-};
-
-static PyObject* pymatemenu_tree_directory_get_contents(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeDirectory* directory;
- PyObject* retval;
- GSList* contents;
- GSList* tmp;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Directory.get_contents"))
- {
- return NULL;
- }
- }
-
- directory = (PyMateMenuTreeDirectory*) self;
-
- retval = PyList_New(0);
-
- contents = matemenu_tree_directory_get_contents(MATEMENU_TREE_DIRECTORY(directory->item));
-
- tmp = contents;
-
- while (tmp != NULL)
- {
- MateMenuTreeItem* item = tmp->data;
- PyObject* pyitem;
-
- switch (matemenu_tree_item_get_type(item))
- {
- case MATEMENU_TREE_ITEM_DIRECTORY:
- pyitem = (PyObject*) pymatemenu_tree_directory_wrap(MATEMENU_TREE_DIRECTORY(item));
- break;
-
- case MATEMENU_TREE_ITEM_ENTRY:
- pyitem = (PyObject*) pymatemenu_tree_entry_wrap(MATEMENU_TREE_ENTRY(item));
- break;
-
- case MATEMENU_TREE_ITEM_SEPARATOR:
- pyitem = (PyObject*) pymatemenu_tree_separator_wrap(MATEMENU_TREE_SEPARATOR(item));
- break;
-
- case MATEMENU_TREE_ITEM_HEADER:
- pyitem = (PyObject*) pymatemenu_tree_header_wrap(MATEMENU_TREE_HEADER(item));
- break;
-
- case MATEMENU_TREE_ITEM_ALIAS:
- pyitem = (PyObject*) pymatemenu_tree_alias_wrap(MATEMENU_TREE_ALIAS(item));
- break;
-
- default:
- g_assert_not_reached();
- break;
- }
-
- PyList_Append(retval, pyitem);
- Py_DECREF(pyitem);
-
- matemenu_tree_item_unref(item);
-
- tmp = tmp->next;
- }
-
- g_slist_free(contents);
-
- return retval;
-}
-
-static PyObject* pymatemenu_tree_directory_get_name(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeDirectory* directory;
- const char* name;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Directory.get_name"))
- {
- return NULL;
- }
- }
-
- directory = (PyMateMenuTreeDirectory*) self;
-
- name = matemenu_tree_directory_get_name(MATEMENU_TREE_DIRECTORY(directory->item));
-
- if (name == NULL)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- return PyString_FromString(name);
-}
-
-static PyObject* pymatemenu_tree_directory_get_comment(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeDirectory* directory;
- const char* comment;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Directory.get_comment"))
- {
- return NULL;
- }
- }
-
- directory = (PyMateMenuTreeDirectory*) self;
-
- comment = matemenu_tree_directory_get_comment(MATEMENU_TREE_DIRECTORY(directory->item));
-
- if (comment == NULL)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- return PyString_FromString(comment);
-}
-
-static PyObject* pymatemenu_tree_directory_get_icon(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeDirectory* directory;
- const char* icon;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Directory.get_icon"))
- {
- return NULL;
- }
- }
-
- directory = (PyMateMenuTreeDirectory*) self;
-
- icon = matemenu_tree_directory_get_icon(MATEMENU_TREE_DIRECTORY(directory->item));
-
- if (icon == NULL)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- return PyString_FromString(icon);
-}
-
-static PyObject* pymatemenu_tree_directory_get_desktop_file_path(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeDirectory* directory;
- const char* path;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Directory.get_desktop_file_path"))
- {
- return NULL;
- }
- }
-
- directory = (PyMateMenuTreeDirectory*) self;
-
- path = matemenu_tree_directory_get_desktop_file_path(MATEMENU_TREE_DIRECTORY(directory->item));
-
- if (path == NULL)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- return PyString_FromString(path);
-}
-
-static PyObject* pymatemenu_tree_directory_get_menu_id(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeDirectory* directory;
- const char* menu_id;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Directory.get_menu_id"))
- {
- return NULL;
- }
- }
-
- directory = (PyMateMenuTreeDirectory*) self;
-
- menu_id = matemenu_tree_directory_get_menu_id(MATEMENU_TREE_DIRECTORY(directory->item));
-
- if (menu_id == NULL)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- return PyString_FromString(menu_id);
-}
-
-static PyObject* pymatemenu_tree_directory_get_tree(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeDirectory* directory;
- MateMenuTree* tree;
- PyMateMenuTree* retval;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Item.get_tree"))
- {
- return NULL;
- }
- }
-
- directory = (PyMateMenuTreeDirectory*) self;
-
- tree = matemenu_tree_directory_get_tree(MATEMENU_TREE_DIRECTORY(directory->item));
-
- if (tree == NULL)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- retval = pymatemenu_tree_wrap(tree);
-
- matemenu_tree_unref(tree);
-
- return (PyObject*) retval;
-}
-
-static PyObject* pymatemenu_tree_directory_make_path(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeDirectory* directory;
- PyMateMenuTreeEntry* entry;
- PyObject* retval;
- char* path;
-
- if (!PyArg_ParseTuple(args, "O:matemenu.Directory.make_path", &entry))
- {
- return NULL;
- }
-
- directory = (PyMateMenuTreeDirectory*) self;
-
- path = matemenu_tree_directory_make_path(MATEMENU_TREE_DIRECTORY(directory->item), MATEMENU_TREE_ENTRY(entry->item));
-
- if (path == NULL)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- retval = PyString_FromString(path);
-
- g_free(path);
-
- return retval;
-}
-
-static PyObject* pymatemenu_tree_directory_getattro(PyMateMenuTreeDirectory* self, PyObject* py_attr)
-{
- if (PyString_Check(py_attr))
- {
- char* attr;
-
- attr = PyString_AsString(py_attr);
-
- if (!strcmp(attr, "__members__"))
- {
- return Py_BuildValue("[sssssssss]",
- "type",
- "parent",
- "contents",
- "name",
- "comment",
- "icon",
- "desktop_file_path",
- "menu_id",
- "tree");
- }
- else if (!strcmp(attr, "type"))
- {
- return pymatemenu_tree_item_get_type((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "parent"))
- {
- return pymatemenu_tree_item_get_parent((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "contents"))
- {
- return pymatemenu_tree_directory_get_contents((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "name"))
- {
- return pymatemenu_tree_directory_get_name((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "comment"))
- {
- return pymatemenu_tree_directory_get_comment((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "icon"))
- {
- return pymatemenu_tree_directory_get_icon((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "desktop_file_path"))
- {
- return pymatemenu_tree_directory_get_desktop_file_path((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "menu_id"))
- {
- return pymatemenu_tree_directory_get_menu_id((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "tree"))
- {
- return pymatemenu_tree_directory_get_tree((PyObject*) self, NULL);
- }
- }
-
- return PyObject_GenericGetAttr((PyObject*) self, py_attr);
-}
-
-static struct PyMethodDef pymatemenu_tree_directory_methods[] = {
- {"get_contents", pymatemenu_tree_directory_get_contents, METH_VARARGS},
- {"get_name", pymatemenu_tree_directory_get_name, METH_VARARGS},
- {"get_comment", pymatemenu_tree_directory_get_comment, METH_VARARGS},
- {"get_icon", pymatemenu_tree_directory_get_icon, METH_VARARGS},
- {"get_desktop_file_path", pymatemenu_tree_directory_get_desktop_file_path, METH_VARARGS},
- {"get_menu_id", pymatemenu_tree_directory_get_menu_id, METH_VARARGS},
- {"get_tree", pymatemenu_tree_directory_get_tree, METH_VARARGS},
- {"make_path", pymatemenu_tree_directory_make_path, METH_VARARGS},
- {NULL, NULL, 0}
-};
-
-static PyTypeObject PyMateMenuTreeDirectory_Type = {
- PyObject_HEAD_INIT(NULL)
- 0, /* ob_size */
- "matemenu.Directory", /* tp_name */
- sizeof(PyMateMenuTreeDirectory), /* tp_basicsize */
- 0, /* tp_itemsize */
- (destructor) pymatemenu_tree_item_dealloc, /* tp_dealloc */
- (printfunc) 0, /* tp_print */
- (getattrfunc) 0, /* tp_getattr */
- (setattrfunc) 0, /* tp_setattr */
- (cmpfunc) 0, /* tp_compare */
- (reprfunc) 0, /* tp_repr */
- 0, /* tp_as_number */
- 0, /* tp_as_sequence */
- 0, /* tp_as_mapping */
- (hashfunc) 0, /* tp_hash */
- (ternaryfunc) 0, /* tp_call */
- (reprfunc) 0, /* tp_str */
- (getattrofunc) pymatemenu_tree_directory_getattro, /* tp_getattro */
- (setattrofunc) 0, /* tp_setattro */
- 0, /* tp_as_buffer */
- Py_TPFLAGS_DEFAULT, /* tp_flags */
- NULL, /* Documentation string */
- (traverseproc) 0, /* tp_traverse */
- (inquiry) 0, /* tp_clear */
- (richcmpfunc) 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- (getiterfunc) 0, /* tp_iter */
- (iternextfunc) 0, /* tp_iternext */
- pymatemenu_tree_directory_methods, /* tp_methods */
- 0, /* tp_members */
- 0, /* tp_getset */
- (PyTypeObject*) 0, /* tp_base */
- (PyObject*) 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- (initproc) 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
- 0, /* tp_free */
- (inquiry) 0, /* tp_is_gc */
- (PyObject*) 0, /* tp_bases */
-};
-
-static PyMateMenuTreeDirectory* pymatemenu_tree_directory_wrap(MateMenuTreeDirectory* directory)
-{
- PyMateMenuTreeDirectory* retval;
-
- if ((retval = matemenu_tree_item_get_user_data(MATEMENU_TREE_ITEM(directory))) != NULL)
- {
- Py_INCREF(retval);
- return retval;
- }
-
- if (!(retval = (PyMateMenuTreeDirectory*) PyObject_NEW(PyMateMenuTreeDirectory, &PyMateMenuTreeDirectory_Type)))
- {
- return NULL;
- }
-
- retval->item = matemenu_tree_item_ref(directory);
-
- matemenu_tree_item_set_user_data(MATEMENU_TREE_ITEM(directory), retval, NULL);
-
- return retval;
-}
-
-static PyObject* pymatemenu_tree_entry_get_name(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeEntry* entry;
- const char* name;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Entry.get_name"))
- {
- return NULL;
- }
- }
-
- entry = (PyMateMenuTreeEntry*) self;
-
- name = matemenu_tree_entry_get_name(MATEMENU_TREE_ENTRY(entry->item));
-
- if (name == NULL)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- return PyString_FromString(name);
-}
-
-static PyObject* pymatemenu_tree_entry_get_generic_name(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeEntry* entry;
- const char* generic_name;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Entry.get_generic_name"))
- {
- return NULL;
- }
- }
-
- entry = (PyMateMenuTreeEntry*) self;
-
- generic_name = matemenu_tree_entry_get_generic_name(MATEMENU_TREE_ENTRY(entry->item));
-
- if (generic_name == NULL)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- return PyString_FromString(generic_name);
-}
-
-static PyObject* pymatemenu_tree_entry_get_display_name(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeEntry* entry;
- const char* display_name;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Entry.get_display_name"))
- {
- return NULL;
- }
- }
-
- entry = (PyMateMenuTreeEntry*) self;
-
- display_name = matemenu_tree_entry_get_display_name(MATEMENU_TREE_ENTRY(entry->item));
-
- if (display_name == NULL)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- return PyString_FromString(display_name);
-}
-
-static PyObject* pymatemenu_tree_entry_get_comment(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeEntry* entry;
- const char* comment;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Entry.get_comment"))
- {
- return NULL;
- }
- }
-
- entry = (PyMateMenuTreeEntry*) self;
-
- comment = matemenu_tree_entry_get_comment(MATEMENU_TREE_ENTRY(entry->item));
-
- if (comment == NULL)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- return PyString_FromString(comment);
-}
-
-static PyObject* pymatemenu_tree_entry_get_icon(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeEntry* entry;
- const char* icon;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Entry.get_icon"))
- {
- return NULL;
- }
- }
-
- entry = (PyMateMenuTreeEntry*) self;
-
- icon = matemenu_tree_entry_get_icon(MATEMENU_TREE_ENTRY(entry->item));
-
- if (icon == NULL)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- return PyString_FromString(icon);
-}
-
-static PyObject* pymatemenu_tree_entry_get_exec(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeEntry* entry;
- const char* exec;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Entry.get_exec"))
- {
- return NULL;
- }
- }
-
- entry = (PyMateMenuTreeEntry*) self;
-
- exec = matemenu_tree_entry_get_exec(MATEMENU_TREE_ENTRY(entry->item));
-
- if (exec == NULL)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- return PyString_FromString(exec);
-}
-
-static PyObject* pymatemenu_tree_entry_get_launch_in_terminal(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeEntry* entry;
- PyObject* retval;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Entry.get_launch_in_terminal"))
- {
- return NULL;
- }
- }
-
- entry = (PyMateMenuTreeEntry*) self;
-
- if (matemenu_tree_entry_get_launch_in_terminal(MATEMENU_TREE_ENTRY(entry->item)))
- {
- retval = Py_True;
- }
- else
- {
- retval = Py_False;
- }
-
- Py_INCREF(retval);
-
- return retval;
-}
-
-static PyObject* pymatemenu_tree_entry_get_desktop_file_path(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeEntry* entry;
- const char* desktop_file_path;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Entry.get_desktop_file_path"))
- {
- return NULL;
- }
- }
-
- entry = (PyMateMenuTreeEntry*) self;
-
- desktop_file_path = matemenu_tree_entry_get_desktop_file_path(MATEMENU_TREE_ENTRY(entry->item));
-
- if (desktop_file_path == NULL)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- return PyString_FromString(desktop_file_path);
-}
-
-static PyObject* pymatemenu_tree_entry_get_desktop_file_id(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeEntry* entry;
- const char* desktop_file_id;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Entry.get_desktop_file_id"))
- {
- return NULL;
- }
- }
-
- entry = (PyMateMenuTreeEntry*) self;
-
- desktop_file_id = matemenu_tree_entry_get_desktop_file_id(MATEMENU_TREE_ENTRY(entry->item));
-
- if (desktop_file_id == NULL)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- return PyString_FromString(desktop_file_id);
-}
-
-static PyObject* pymatemenu_tree_entry_get_is_excluded(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeEntry* entry;
- PyObject* retval;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Entry.get_is_excluded"))
- {
- return NULL;
- }
- }
-
- entry = (PyMateMenuTreeEntry*) self;
-
- retval = matemenu_tree_entry_get_is_excluded(MATEMENU_TREE_ENTRY(entry->item)) ? Py_True : Py_False;
- Py_INCREF(retval);
-
- return retval;
-}
-
-static PyObject* pymatemenu_tree_entry_get_is_nodisplay(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeEntry* entry;
- PyObject* retval;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Entry.get_is_nodisplay"))
- {
- return NULL;
- }
- }
-
- entry = (PyMateMenuTreeEntry*) self;
-
- if (matemenu_tree_entry_get_is_nodisplay(MATEMENU_TREE_ENTRY(entry->item)))
- {
- retval = Py_True;
- }
- else
- {
- retval = Py_False;
- }
-
- Py_INCREF(retval);
-
- return retval;
-}
-
-static PyObject* pymatemenu_tree_entry_getattro(PyMateMenuTreeEntry* self, PyObject* py_attr)
-{
- if (PyString_Check(py_attr))
- {
- char* attr;
-
- attr = PyString_AsString(py_attr);
-
- if (!strcmp(attr, "__members__"))
- {
- return Py_BuildValue("[sssssssssss]",
- "type",
- "parent",
- "name",
- "comment",
- "icon",
- "exec_info",
- "launch_in_terminal",
- "desktop_file_path",
- "desktop_file_id",
- "is_excluded",
- "is_nodisplay");
- }
- else if (!strcmp(attr, "type"))
- {
- return pymatemenu_tree_item_get_type((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "parent"))
- {
- return pymatemenu_tree_item_get_parent((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "name"))
- {
- return pymatemenu_tree_entry_get_name((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "generic_name"))
- {
- return pymatemenu_tree_entry_get_generic_name((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "display_name"))
- {
- return pymatemenu_tree_entry_get_display_name((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "comment"))
- {
- return pymatemenu_tree_entry_get_comment((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "icon"))
- {
- return pymatemenu_tree_entry_get_icon((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "exec_info"))
- {
- return pymatemenu_tree_entry_get_exec((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "launch_in_terminal"))
- {
- return pymatemenu_tree_entry_get_launch_in_terminal((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "desktop_file_path"))
- {
- return pymatemenu_tree_entry_get_desktop_file_path((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "desktop_file_id"))
- {
- return pymatemenu_tree_entry_get_desktop_file_id((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "is_excluded"))
- {
- return pymatemenu_tree_entry_get_is_excluded((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "is_nodisplay"))
- {
- return pymatemenu_tree_entry_get_is_nodisplay((PyObject*) self, NULL);
- }
- }
-
- return PyObject_GenericGetAttr((PyObject*) self, py_attr);
-}
-
-static struct PyMethodDef pymatemenu_tree_entry_methods[] = {
- {"get_name", pymatemenu_tree_entry_get_name, METH_VARARGS},
- {"get_generic_name", pymatemenu_tree_entry_get_generic_name, METH_VARARGS},
- {"get_display_name", pymatemenu_tree_entry_get_display_name, METH_VARARGS},
- {"get_comment", pymatemenu_tree_entry_get_comment, METH_VARARGS},
- {"get_icon", pymatemenu_tree_entry_get_icon, METH_VARARGS},
- {"get_exec", pymatemenu_tree_entry_get_exec, METH_VARARGS},
- {"get_launch_in_terminal", pymatemenu_tree_entry_get_launch_in_terminal, METH_VARARGS},
- {"get_desktop_file_path", pymatemenu_tree_entry_get_desktop_file_path, METH_VARARGS},
- {"get_desktop_file_id", pymatemenu_tree_entry_get_desktop_file_id, METH_VARARGS},
- {"get_is_excluded", pymatemenu_tree_entry_get_is_excluded, METH_VARARGS},
- {"get_is_nodisplay", pymatemenu_tree_entry_get_is_nodisplay, METH_VARARGS},
- {NULL, NULL, 0}
-};
-
-static PyTypeObject PyMateMenuTreeEntry_Type = {
- PyObject_HEAD_INIT(NULL)
- 0, /* ob_size */
- "matemenu.Entry", /* tp_name */
- sizeof(PyMateMenuTreeEntry), /* tp_basicsize */
- 0, /* tp_itemsize */
- (destructor) pymatemenu_tree_item_dealloc, /* tp_dealloc */
- (printfunc) 0, /* tp_print */
- (getattrfunc) 0, /* tp_getattr */
- (setattrfunc) 0, /* tp_setattr */
- (cmpfunc) 0, /* tp_compare */
- (reprfunc) 0, /* tp_repr */
- 0, /* tp_as_number */
- 0, /* tp_as_sequence */
- 0, /* tp_as_mapping */
- (hashfunc) 0, /* tp_hash */
- (ternaryfunc) 0, /* tp_call */
- (reprfunc) 0, /* tp_str */
- (getattrofunc) pymatemenu_tree_entry_getattro, /* tp_getattro */
- (setattrofunc) 0, /* tp_setattro */
- 0, /* tp_as_buffer */
- Py_TPFLAGS_DEFAULT, /* tp_flags */
- NULL, /* Documentation string */
- (traverseproc) 0, /* tp_traverse */
- (inquiry) 0, /* tp_clear */
- (richcmpfunc) 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- (getiterfunc) 0, /* tp_iter */
- (iternextfunc) 0, /* tp_iternext */
- pymatemenu_tree_entry_methods, /* tp_methods */
- 0, /* tp_members */
- 0, /* tp_getset */
- (PyTypeObject*) 0, /* tp_base */
- (PyObject*) 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- (initproc) 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
- 0, /* tp_free */
- (inquiry) 0, /* tp_is_gc */
- (PyObject*) 0, /* tp_bases */
-};
-
-static PyMateMenuTreeEntry* pymatemenu_tree_entry_wrap(MateMenuTreeEntry* entry)
-{
- PyMateMenuTreeEntry* retval;
-
- if ((retval = matemenu_tree_item_get_user_data(MATEMENU_TREE_ITEM(entry))) != NULL)
- {
- Py_INCREF(retval);
- return retval;
- }
-
- if (!(retval = (PyMateMenuTreeEntry*) PyObject_NEW(PyMateMenuTreeEntry, &PyMateMenuTreeEntry_Type)))
- {
- return NULL;
- }
-
- retval->item = matemenu_tree_item_ref(entry);
-
- matemenu_tree_item_set_user_data(MATEMENU_TREE_ITEM(entry), retval, NULL);
-
- return retval;
-}
-
-static PyTypeObject PyMateMenuTreeSeparator_Type = {
- PyObject_HEAD_INIT(NULL)
- 0, /* ob_size */
- "matemenu.Separator", /* tp_name */
- sizeof(PyMateMenuTreeSeparator), /* tp_basicsize */
- 0, /* tp_itemsize */
- (destructor) pymatemenu_tree_item_dealloc, /* tp_dealloc */
- (printfunc) 0, /* tp_print */
- (getattrfunc) 0, /* tp_getattr */
- (setattrfunc) 0, /* tp_setattr */
- (cmpfunc) 0, /* tp_compare */
- (reprfunc) 0, /* tp_repr */
- 0, /* tp_as_number */
- 0, /* tp_as_sequence */
- 0, /* tp_as_mapping */
- (hashfunc) 0, /* tp_hash */
- (ternaryfunc) 0, /* tp_call */
- (reprfunc) 0, /* tp_str */
- (getattrofunc) 0, /* tp_getattro */
- (setattrofunc) 0, /* tp_setattro */
- 0, /* tp_as_buffer */
- Py_TPFLAGS_DEFAULT, /* tp_flags */
- NULL, /* Documentation string */
- (traverseproc) 0, /* tp_traverse */
- (inquiry) 0, /* tp_clear */
- (richcmpfunc) 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- (getiterfunc) 0, /* tp_iter */
- (iternextfunc) 0, /* tp_iternext */
- NULL, /* tp_methods */
- 0, /* tp_members */
- 0, /* tp_getset */
- (PyTypeObject*) 0, /* tp_base */
- (PyObject*) 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- (initproc) 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
- 0, /* tp_free */
- (inquiry) 0, /* tp_is_gc */
- (PyObject*) 0, /* tp_bases */
-};
-
-static PyMateMenuTreeSeparator* pymatemenu_tree_separator_wrap(MateMenuTreeSeparator* separator)
-{
- PyMateMenuTreeSeparator* retval;
-
- if ((retval = matemenu_tree_item_get_user_data(MATEMENU_TREE_ITEM(separator))) != NULL)
- {
- Py_INCREF(retval);
- return retval;
- }
-
- if (!(retval = (PyMateMenuTreeSeparator*) PyObject_NEW(PyMateMenuTreeSeparator, &PyMateMenuTreeSeparator_Type)))
- {
- return NULL;
- }
-
- retval->item = matemenu_tree_item_ref(separator);
-
- matemenu_tree_item_set_user_data(MATEMENU_TREE_ITEM(separator), retval, NULL);
-
- return retval;
-}
-
-static PyObject* pymatemenu_tree_header_get_directory(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeHeader* header;
- MateMenuTreeDirectory* directory;
- PyMateMenuTreeDirectory* retval;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Header.get_directory"))
- {
- return NULL;
- }
- }
-
- header = (PyMateMenuTreeHeader*) self;
-
- directory = matemenu_tree_header_get_directory(MATEMENU_TREE_HEADER(header->item));
-
- if (directory == NULL)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- retval = pymatemenu_tree_directory_wrap(directory);
-
- matemenu_tree_item_unref(directory);
-
- return (PyObject*) retval;
-}
-
-static PyObject* pymatemenu_tree_header_getattro(PyMateMenuTreeHeader* self, PyObject* py_attr)
-{
- if (PyString_Check(py_attr))
- {
- char* attr;
-
- attr = PyString_AsString(py_attr);
-
- if (!strcmp(attr, "__members__"))
- {
- return Py_BuildValue("[sss]",
- "type",
- "parent",
- "directory");
- }
- else if (!strcmp(attr, "type"))
- {
- return pymatemenu_tree_item_get_type((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "parent"))
- {
- return pymatemenu_tree_item_get_parent((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "directory"))
- {
- return pymatemenu_tree_header_get_directory((PyObject*) self, NULL);
- }
- }
-
- return PyObject_GenericGetAttr((PyObject*) self, py_attr);
-}
-
-static struct PyMethodDef pymatemenu_tree_header_methods[] = {
- {"get_directory", pymatemenu_tree_header_get_directory, METH_VARARGS},
- {NULL, NULL, 0}
-};
-
-static PyTypeObject PyMateMenuTreeHeader_Type = {
- PyObject_HEAD_INIT(NULL)
- 0, /* ob_size */
- "matemenu.Header", /* tp_name */
- sizeof(PyMateMenuTreeHeader), /* tp_basicsize */
- 0, /* tp_itemsize */
- (destructor) pymatemenu_tree_item_dealloc, /* tp_dealloc */
- (printfunc) 0, /* tp_print */
- (getattrfunc) 0, /* tp_getattr */
- (setattrfunc) 0, /* tp_setattr */
- (cmpfunc) 0, /* tp_compare */
- (reprfunc) 0, /* tp_repr */
- 0, /* tp_as_number */
- 0, /* tp_as_sequence */
- 0, /* tp_as_mapping */
- (hashfunc) 0, /* tp_hash */
- (ternaryfunc) 0, /* tp_call */
- (reprfunc) 0, /* tp_str */
- (getattrofunc) pymatemenu_tree_header_getattro, /* tp_getattro */
- (setattrofunc) 0, /* tp_setattro */
- 0, /* tp_as_buffer */
- Py_TPFLAGS_DEFAULT, /* tp_flags */
- NULL, /* Documentation string */
- (traverseproc) 0, /* tp_traverse */
- (inquiry) 0, /* tp_clear */
- (richcmpfunc) 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- (getiterfunc) 0, /* tp_iter */
- (iternextfunc) 0, /* tp_iternext */
- pymatemenu_tree_header_methods, /* tp_methods */
- 0, /* tp_members */
- 0, /* tp_getset */
- (PyTypeObject*) 0, /* tp_base */
- (PyObject*) 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- (initproc) 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
- 0, /* tp_free */
- (inquiry) 0, /* tp_is_gc */
- (PyObject*) 0, /* tp_bases */
-};
-
-static PyMateMenuTreeHeader* pymatemenu_tree_header_wrap(MateMenuTreeHeader* header)
-{
- PyMateMenuTreeHeader* retval;
-
- if ((retval = matemenu_tree_item_get_user_data(MATEMENU_TREE_ITEM(header))) != NULL)
- {
- Py_INCREF(retval);
- return retval;
- }
-
- if (!(retval = (PyMateMenuTreeHeader*) PyObject_NEW(PyMateMenuTreeHeader, &PyMateMenuTreeHeader_Type)))
- {
- return NULL;
- }
-
- retval->item = matemenu_tree_item_ref(header);
-
- matemenu_tree_item_set_user_data(MATEMENU_TREE_ITEM(header), retval, NULL);
-
- return retval;
-}
-
-static PyObject* pymatemenu_tree_alias_get_directory(PyObject*self, PyObject* args)
-{
- PyMateMenuTreeAlias* alias;
- MateMenuTreeDirectory* directory;
- PyMateMenuTreeDirectory* retval;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Alias.get_directory"))
- {
- return NULL;
- }
- }
-
- alias = (PyMateMenuTreeAlias*) self;
-
- directory = matemenu_tree_alias_get_directory(MATEMENU_TREE_ALIAS(alias->item));
-
- if (directory == NULL)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- retval = pymatemenu_tree_directory_wrap(directory);
-
- matemenu_tree_item_unref(directory);
-
- return (PyObject*) retval;
-}
-
-static PyObject* pymatemenu_tree_alias_get_item(PyObject* self, PyObject* args)
-{
- PyMateMenuTreeAlias* alias;
- MateMenuTreeItem* item;
- PyObject* retval;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Alias.get_item"))
- {
- return NULL;
- }
- }
-
- alias = (PyMateMenuTreeAlias*) self;
-
- item = matemenu_tree_alias_get_item(MATEMENU_TREE_ALIAS(alias->item));
-
- if (item == NULL)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- switch (matemenu_tree_item_get_type(item))
- {
- case MATEMENU_TREE_ITEM_DIRECTORY:
- retval = (PyObject*) pymatemenu_tree_directory_wrap(MATEMENU_TREE_DIRECTORY(item));
- break;
-
- case MATEMENU_TREE_ITEM_ENTRY:
- retval = (PyObject*) pymatemenu_tree_entry_wrap(MATEMENU_TREE_ENTRY(item));
- break;
-
- default:
- g_assert_not_reached();
- break;
- }
-
- matemenu_tree_item_unref(item);
-
- return retval;
-}
-
-static PyObject* pymatemenu_tree_alias_getattro(PyMateMenuTreeAlias* self, PyObject* py_attr)
-{
- if (PyString_Check(py_attr))
- {
- char* attr;
-
- attr = PyString_AsString(py_attr);
-
- if (!strcmp(attr, "__members__"))
- {
- return Py_BuildValue("[ssss]",
- "type",
- "parent",
- "directory",
- "item");
- }
- else if (!strcmp(attr, "type"))
- {
- return pymatemenu_tree_item_get_type((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "parent"))
- {
- return pymatemenu_tree_item_get_parent((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "directory"))
- {
- return pymatemenu_tree_alias_get_directory((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "item"))
- {
- return pymatemenu_tree_alias_get_item((PyObject*) self, NULL);
- }
- }
-
- return PyObject_GenericGetAttr((PyObject*) self, py_attr);
-}
-
-static struct PyMethodDef pymatemenu_tree_alias_methods[] = {
- {"get_directory", pymatemenu_tree_alias_get_directory, METH_VARARGS},
- {"get_item", pymatemenu_tree_alias_get_item, METH_VARARGS},
- {NULL, NULL, 0}
-};
-
-static PyTypeObject PyMateMenuTreeAlias_Type = {
- PyObject_HEAD_INIT(NULL)
- 0, /* ob_size */
- "matemenu.Alias", /* tp_name */
- sizeof(PyMateMenuTreeAlias), /* tp_basicsize */
- 0, /* tp_itemsize */
- (destructor) pymatemenu_tree_item_dealloc, /* tp_dealloc */
- (printfunc) 0, /* tp_print */
- (getattrfunc) 0, /* tp_getattr */
- (setattrfunc) 0, /* tp_setattr */
- (cmpfunc) 0, /* tp_compare */
- (reprfunc) 0, /* tp_repr */
- 0, /* tp_as_number */
- 0, /* tp_as_sequence */
- 0, /* tp_as_mapping */
- (hashfunc) 0, /* tp_hash */
- (ternaryfunc) 0, /* tp_call */
- (reprfunc) 0, /* tp_str */
- (getattrofunc) pymatemenu_tree_alias_getattro, /* tp_getattro */
- (setattrofunc) 0, /* tp_setattro */
- 0, /* tp_as_buffer */
- Py_TPFLAGS_DEFAULT, /* tp_flags */
- NULL, /* Documentation string */
- (traverseproc) 0, /* tp_traverse */
- (inquiry) 0, /* tp_clear */
- (richcmpfunc) 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- (getiterfunc) 0, /* tp_iter */
- (iternextfunc) 0, /* tp_iternext */
- pymatemenu_tree_alias_methods, /* tp_methods */
- 0, /* tp_members */
- 0, /* tp_getset */
- (PyTypeObject*) 0, /* tp_base */
- (PyObject*) 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- (initproc) 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
- 0, /* tp_free */
- (inquiry) 0, /* tp_is_gc */
- (PyObject*) 0, /* tp_bases */
-};
-
-static PyMateMenuTreeAlias* pymatemenu_tree_alias_wrap(MateMenuTreeAlias* alias)
-{
- PyMateMenuTreeAlias* retval;
-
- if ((retval = matemenu_tree_item_get_user_data(MATEMENU_TREE_ITEM(alias))) != NULL)
- {
- Py_INCREF(retval);
- return retval;
- }
-
- if (!(retval = (PyMateMenuTreeAlias*) PyObject_NEW(PyMateMenuTreeAlias, &PyMateMenuTreeAlias_Type)))
- {
- return NULL;
- }
-
- retval->item = matemenu_tree_item_ref(alias);
-
- matemenu_tree_item_set_user_data(MATEMENU_TREE_ITEM(alias), retval, NULL);
-
- return retval;
-}
-
-static PyObject* pymatemenu_tree_get_menu_file(PyObject* self, PyObject* args)
-{
- PyMateMenuTree* tree;
- const char* menu_file;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Tree.get_menu_file"))
- {
- return NULL;
- }
- }
-
- tree = (PyMateMenuTree*) self;
-
- menu_file = matemenu_tree_get_menu_file(tree->tree);
-
- if (menu_file == NULL)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- return PyString_FromString(menu_file);
-}
-
-static PyObject* pymatemenu_tree_get_root_directory(PyObject* self, PyObject* args)
-{
- PyMateMenuTree* tree;
- MateMenuTreeDirectory* directory;
- PyMateMenuTreeDirectory* retval;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Tree.get_root_directory"))
- {
- return NULL;
- }
- }
-
- tree = (PyMateMenuTree*) self;
-
- directory = matemenu_tree_get_root_directory(tree->tree);
-
- if (directory == NULL)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- retval = pymatemenu_tree_directory_wrap (directory);
-
- matemenu_tree_item_unref(directory);
-
- return (PyObject*) retval;
-}
-
-static PyObject* pymatemenu_tree_get_directory_from_path(PyObject* self, PyObject* args)
-{
- PyMateMenuTree* tree;
- MateMenuTreeDirectory* directory;
- PyMateMenuTreeDirectory* retval;
- char* path;
-
- if (!PyArg_ParseTuple(args, "s:matemenu.Tree.get_directory_from_path", &path))
- {
- return NULL;
- }
-
- tree = (PyMateMenuTree*) self;
-
- directory = matemenu_tree_get_directory_from_path(tree->tree, path);
-
- if (directory == NULL)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- retval = pymatemenu_tree_directory_wrap(directory);
-
- matemenu_tree_item_unref(directory);
-
- return (PyObject*) retval;
-}
-
-static PyObject* pymatemenu_tree_get_sort_key(PyObject* self, PyObject* args)
-{
- PyMateMenuTree* tree;
- PyObject* retval;
-
- if (args != NULL)
- {
- if (!PyArg_ParseTuple(args, ":matemenu.Tree.get_sort_key"))
- {
- return NULL;
- }
- }
-
- tree = (PyMateMenuTree*) self;
-
- switch (matemenu_tree_get_sort_key(tree->tree))
- {
- case MATEMENU_TREE_SORT_NAME:
- retval = lookup_item_type_str("SORT_NAME");
- break;
-
- case MATEMENU_TREE_SORT_DISPLAY_NAME:
- retval = lookup_item_type_str("SORT_DISPLAY_NAME");
- break;
-
- default:
- g_assert_not_reached();
- break;
- }
-
- return (PyObject*) retval;
-}
-
-static PyObject* pymatemenu_tree_set_sort_key(PyObject* self, PyObject* args)
-{
- PyMateMenuTree* tree;
- int sort_key;
-
- if (!PyArg_ParseTuple(args, "i:matemenu.Tree.set_sort_key", &sort_key))
- {
- return NULL;
- }
-
- tree = (PyMateMenuTree*) self;
-
- matemenu_tree_set_sort_key(tree->tree, sort_key);
-
- return Py_None;
-}
-
-static PyMateMenuTreeCallback* pymatemenu_tree_callback_new(PyObject* tree, PyObject* callback, PyObject* user_data)
-{
- PyMateMenuTreeCallback* retval;
-
- retval = g_new0(PyMateMenuTreeCallback, 1);
-
- Py_INCREF(tree);
- retval->tree = tree;
-
- Py_INCREF(callback);
- retval->callback = callback;
-
- Py_XINCREF(user_data);
- retval->user_data = user_data;
-
- return retval;
-}
-
-static void pymatemenu_tree_callback_free(PyMateMenuTreeCallback* callback)
-{
- Py_XDECREF(callback->user_data);
- callback->user_data = NULL;
-
- Py_DECREF(callback->callback);
- callback->callback = NULL;
-
- Py_DECREF(callback->tree);
- callback->tree = NULL;
-
- g_free(callback);
-}
-
-static void pymatemenu_tree_handle_monitor_callback(MateMenuTree* tree, PyMateMenuTreeCallback* callback)
-{
- PyObject* args;
- PyObject* ret;
- PyGILState_STATE gstate;
-
- gstate = PyGILState_Ensure();
-
- args = PyTuple_New(callback->user_data ? 2 : 1);
-
- Py_INCREF(callback->tree);
- PyTuple_SET_ITEM(args, 0, callback->tree);
-
- if (callback->user_data != NULL)
- {
- Py_INCREF(callback->user_data);
- PyTuple_SET_ITEM(args, 1, callback->user_data);
- }
-
- ret = PyObject_CallObject(callback->callback, args);
-
- Py_XDECREF(ret);
- Py_DECREF(args);
-
- PyGILState_Release(gstate);
-}
-
-static PyObject* pymatemenu_tree_add_monitor(PyObject* self, PyObject* args)
-{
- PyMateMenuTree* tree;
- PyMateMenuTreeCallback* callback;
- PyObject* pycallback;
- PyObject* pyuser_data = NULL;
-
- if (!PyArg_ParseTuple(args, "O|O:matemenu.Tree.add_monitor", &pycallback, &pyuser_data))
- {
- return NULL;
- }
-
- if (!PyCallable_Check(pycallback))
- {
- PyErr_SetString(PyExc_TypeError, "callback must be callable");
- return NULL;
- }
-
- tree = (PyMateMenuTree*) self;
-
- callback = pymatemenu_tree_callback_new(self, pycallback, pyuser_data);
-
- tree->callbacks = g_slist_append(tree->callbacks, callback);
-
- {
- MateMenuTreeDirectory* dir = matemenu_tree_get_root_directory(tree->tree);
- if (dir)
- {
- matemenu_tree_item_unref(dir);
- }
- }
-
- matemenu_tree_add_monitor(tree->tree, (MateMenuTreeChangedFunc) pymatemenu_tree_handle_monitor_callback, callback);
-
- Py_INCREF(Py_None);
- return Py_None;
-}
-
-static PyObject* pymatemenu_tree_remove_monitor(PyObject* self, PyObject* args)
-{
- PyMateMenuTree* tree;
- PyObject* pycallback;
- PyObject* pyuser_data;
- GSList* tmp;
-
- if (!PyArg_ParseTuple(args, "O|O:matemenu.Tree.remove_monitor", &pycallback, &pyuser_data))
- {
- return NULL;
- }
-
- tree = (PyMateMenuTree*) self;
-
- tmp = tree->callbacks;
-
- while (tmp != NULL)
- {
- PyMateMenuTreeCallback* callback = tmp->data;
- GSList* next = tmp->next;
-
- if (callback->callback == pycallback && callback->user_data == pyuser_data)
- {
- tree->callbacks = g_slist_delete_link(tree->callbacks, tmp);
- pymatemenu_tree_callback_free(callback);
- }
-
- tmp = next;
- }
-
- Py_INCREF(Py_None);
-
- return Py_None;
-}
-
-static void pymatemenu_tree_dealloc(PyMateMenuTree* self)
-{
- g_slist_foreach(self->callbacks, (GFunc) pymatemenu_tree_callback_free, NULL);
- g_slist_free(self->callbacks);
- self->callbacks = NULL;
-
- if (self->tree != NULL)
- {
- matemenu_tree_unref(self->tree);
- }
-
- self->tree = NULL;
-
- PyObject_DEL(self);
-}
-
-static PyObject* pymatemenu_tree_getattro(PyMateMenuTree* self, PyObject* py_attr)
-{
- if (PyString_Check(py_attr))
- {
- char* attr;
-
- attr = PyString_AsString(py_attr);
-
- if (!strcmp(attr, "__members__"))
- {
- return Py_BuildValue("[sss]", "root", "menu_file", "sort_key");
- }
- else if (!strcmp(attr, "root"))
- {
- return pymatemenu_tree_get_root_directory((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "menu_file"))
- {
- return pymatemenu_tree_get_menu_file((PyObject*) self, NULL);
- }
- else if (!strcmp(attr, "sort_key"))
- {
- return pymatemenu_tree_get_sort_key((PyObject*) self, NULL);
- }
- }
-
- return PyObject_GenericGetAttr((PyObject*) self, py_attr);
-}
-
-static int pymatemenu_tree_setattro(PyMateMenuTree* self, PyObject* py_attr, PyObject* py_value)
-{
- PyMateMenuTree* tree;
-
- tree = (PyMateMenuTree*) self;
-
- if (PyString_Check(py_attr))
- {
- char* attr;
-
- attr = PyString_AsString(py_attr);
-
- if (!strcmp(attr, "sort_key"))
- {
- if (PyInt_Check(py_value))
- {
- int sort_key;
-
- sort_key = PyInt_AsLong(py_value);
-
- if (sort_key < MATEMENU_TREE_SORT_FIRST || sort_key > MATEMENU_TREE_SORT_LAST)
- {
- return -1;
- }
-
- matemenu_tree_set_sort_key(tree->tree, sort_key);
-
- return 0;
- }
- }
- }
-
- return -1;
-}
-
-static struct PyMethodDef pymatemenu_tree_methods[] = {
- {"get_menu_file", pymatemenu_tree_get_menu_file, METH_VARARGS},
- {"get_root_directory", pymatemenu_tree_get_root_directory, METH_VARARGS},
- {"get_directory_from_path", pymatemenu_tree_get_directory_from_path, METH_VARARGS},
- {"get_sort_key", pymatemenu_tree_get_sort_key, METH_VARARGS},
- {"set_sort_key", pymatemenu_tree_set_sort_key, METH_VARARGS},
- {"add_monitor", pymatemenu_tree_add_monitor, METH_VARARGS},
- {"remove_monitor", pymatemenu_tree_remove_monitor, METH_VARARGS},
- {NULL, NULL, 0}
-};
-
-static PyTypeObject PyMateMenuTree_Type = {
- PyObject_HEAD_INIT(NULL)
- 0, /* ob_size */
- "matemenu.Tree", /* tp_name */
- sizeof(PyMateMenuTree), /* tp_basicsize */
- 0, /* tp_itemsize */
- (destructor) pymatemenu_tree_dealloc, /* tp_dealloc */
- (printfunc) 0, /* tp_print */
- (getattrfunc) 0, /* tp_getattr */
- (setattrfunc) 0, /* tp_setattr */
- (cmpfunc) 0, /* tp_compare */
- (reprfunc) 0, /* tp_repr */
- 0, /* tp_as_number */
- 0, /* tp_as_sequence */
- 0, /* tp_as_mapping */
- (hashfunc) 0, /* tp_hash */
- (ternaryfunc) 0, /* tp_call */
- (reprfunc) 0, /* tp_str */
- (getattrofunc) pymatemenu_tree_getattro, /* tp_getattro */
- (setattrofunc) pymatemenu_tree_setattro, /* tp_setattro */
- 0, /* tp_as_buffer */
- Py_TPFLAGS_DEFAULT, /* tp_flags */
- NULL, /* Documentation string */
- (traverseproc) 0, /* tp_traverse */
- (inquiry) 0, /* tp_clear */
- (richcmpfunc) 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- (getiterfunc) 0, /* tp_iter */
- (iternextfunc) 0, /* tp_iternext */
- pymatemenu_tree_methods, /* tp_methods */
- 0, /* tp_members */
- 0, /* tp_getset */
- (PyTypeObject*) 0, /* tp_base */
- (PyObject*) 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- (initproc) 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
- 0, /* tp_free */
- (inquiry) 0, /* tp_is_gc */
- (PyObject*) 0, /* tp_bases */
-};
-
-static PyMateMenuTree* pymatemenu_tree_wrap(MateMenuTree* tree)
-{
- PyMateMenuTree* retval;
-
- if ((retval = matemenu_tree_get_user_data(tree)) != NULL)
- {
- Py_INCREF(retval);
- return retval;
- }
-
- if (!(retval = (PyMateMenuTree*) PyObject_NEW(PyMateMenuTree, &PyMateMenuTree_Type)))
- {
- return NULL;
- }
-
- retval->tree = matemenu_tree_ref(tree);
- retval->callbacks = NULL;
-
- matemenu_tree_set_user_data(tree, retval, NULL);
-
- return retval;
-}
-
-static PyObject* pymatemenu_lookup_tree(PyObject* self, PyObject* args)
-{
- char* menu_file;
-
- MateMenuTree* tree;
- PyMateMenuTree* retval;
- int flags;
-
- flags = MATEMENU_TREE_FLAGS_NONE;
-
- if (!PyArg_ParseTuple(args, "s|i:matemenu.lookup_tree", &menu_file, &flags))
- {
- return NULL;
- }
-
- if (!(tree = matemenu_tree_lookup(menu_file, flags)))
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- retval = pymatemenu_tree_wrap(tree);
-
- matemenu_tree_unref(tree);
-
- return (PyObject*) retval;
-}
-
-static struct PyMethodDef pymatemenu_methods[] = {
- {"lookup_tree", pymatemenu_lookup_tree, METH_VARARGS},
- {NULL, NULL, 0 }
-};
-
-void initmatemenu(void);
-
-DL_EXPORT(void) initmatemenu(void)
-{
- PyObject* mod;
-
- mod = Py_InitModule4("matemenu", pymatemenu_methods, 0, 0, PYTHON_API_VERSION);
-
- #define REGISTER_TYPE(t, n) G_STMT_START \
- { \
- t.ob_type = &PyType_Type; \
- PyType_Ready(&t); \
- PyModule_AddObject(mod, n, (PyObject*) &t); \
- } G_STMT_END
-
- REGISTER_TYPE(PyMateMenuTree_Type, "Tree");
- REGISTER_TYPE(PyMateMenuTreeItem_Type, "Item");
-
- #define REGISTER_ITEM_TYPE(t, n) G_STMT_START \
- { \
- t.ob_type = &PyType_Type; \
- t.tp_base = &PyMateMenuTreeItem_Type; \
- PyType_Ready(&t); \
- PyModule_AddObject(mod, n, (PyObject*) &t); \
- } G_STMT_END
-
- REGISTER_ITEM_TYPE(PyMateMenuTreeDirectory_Type, "Directory");
- REGISTER_ITEM_TYPE(PyMateMenuTreeEntry_Type, "Entry");
- REGISTER_ITEM_TYPE(PyMateMenuTreeSeparator_Type, "Separator");
- REGISTER_ITEM_TYPE(PyMateMenuTreeHeader_Type, "Header");
- REGISTER_ITEM_TYPE(PyMateMenuTreeAlias_Type, "Alias");
-
- PyModule_AddIntConstant(mod, "TYPE_INVALID", MATEMENU_TREE_ITEM_INVALID);
- PyModule_AddIntConstant(mod, "TYPE_DIRECTORY", MATEMENU_TREE_ITEM_DIRECTORY);
- PyModule_AddIntConstant(mod, "TYPE_ENTRY", MATEMENU_TREE_ITEM_ENTRY);
- PyModule_AddIntConstant(mod, "TYPE_SEPARATOR", MATEMENU_TREE_ITEM_SEPARATOR);
- PyModule_AddIntConstant(mod, "TYPE_HEADER", MATEMENU_TREE_ITEM_HEADER);
- PyModule_AddIntConstant(mod, "TYPE_ALIAS", MATEMENU_TREE_ITEM_ALIAS);
-
- PyModule_AddIntConstant(mod, "FLAGS_NONE", MATEMENU_TREE_FLAGS_NONE);
- PyModule_AddIntConstant(mod, "FLAGS_INCLUDE_EXCLUDED", MATEMENU_TREE_FLAGS_INCLUDE_EXCLUDED);
- PyModule_AddIntConstant(mod, "FLAGS_SHOW_EMPTY", MATEMENU_TREE_FLAGS_SHOW_EMPTY);
- PyModule_AddIntConstant(mod, "FLAGS_INCLUDE_NODISPLAY", MATEMENU_TREE_FLAGS_INCLUDE_NODISPLAY);
- PyModule_AddIntConstant(mod, "FLAGS_SHOW_ALL_SEPARATORS", MATEMENU_TREE_FLAGS_SHOW_ALL_SEPARATORS);
-
- PyModule_AddIntConstant(mod, "SORT_NAME", MATEMENU_TREE_SORT_NAME);
- PyModule_AddIntConstant(mod, "SORT_DISPLAY_NAME", MATEMENU_TREE_SORT_DISPLAY_NAME);
-}