diff options
Diffstat (limited to 'objects/notifylist-object.c')
| -rw-r--r-- | objects/notifylist-object.c | 221 |
1 files changed, 0 insertions, 221 deletions
diff --git a/objects/notifylist-object.c b/objects/notifylist-object.c deleted file mode 100644 index 3366d0f..0000000 --- a/objects/notifylist-object.c +++ /dev/null @@ -1,221 +0,0 @@ -#include <Python.h> -#include "pyirssi_irc.h" -#include "pymodule.h" -#include "notifylist-object.h" -#include "pycore.h" - -#define NOTIFYLIST(nl) ((NOTIFYLIST_REC *)nl) - -/* monitor "notifylist remove" signal */ -static void notifylist_cleanup(NOTIFYLIST_REC *notifylist) -{ - PyNotifylist *pynotifylist = signal_get_user_data(); - - if (notifylist == pynotifylist->data) - { - pynotifylist->data = NULL; - pynotifylist->cleanup_installed = 0; - signal_remove_data("notifylist remove", notifylist_cleanup, pynotifylist); - } -} - -static void PyNotifylist_dealloc(PyNotifylist *self) -{ - if (self->cleanup_installed) - signal_remove_data("notifylist remove", notifylist_cleanup, self); - - self->ob_type->tp_free((PyObject*)self); -} - -static PyObject *PyNotifylist_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{ - PyNotifylist *self; - - self = (PyNotifylist *)type->tp_alloc(type, 0); - if (!self) - return NULL; - - return (PyObject *)self; -} - -/* Getters */ -PyDoc_STRVAR(PyNotifylist_mask_doc, - "Notify nick mask" -); -static PyObject *PyNotifylist_mask_get(PyNotifylist *self, void *closure) -{ - RET_NULL_IF_INVALID(self->data); - RET_AS_STRING_OR_NONE(NOTIFYLIST(self->data)->mask); -} - -PyDoc_STRVAR(PyNotifylist_away_check_doc, - "Notify away status changes" -); -static PyObject *PyNotifylist_away_check_get(PyNotifylist *self, void *closure) -{ - RET_NULL_IF_INVALID(self->data); - return PyBool_FromLong(NOTIFYLIST(self->data)->away_check); -} - -PyDoc_STRVAR(PyNotifylist_idle_check_time_doc, - "Notify when idle time is reset and idle was bigger than this (seconds)" -); -static PyObject *PyNotifylist_idle_check_time_get(PyNotifylist *self, void *closure) -{ - RET_NULL_IF_INVALID(self->data); - return PyLong_FromUnsignedLong(NOTIFYLIST(self->data)->idle_check_time); -} - -/* specialized getters/setters */ -static PyGetSetDef PyNotifylist_getseters[] = { - {"mask", (getter)PyNotifylist_mask_get, NULL, - PyNotifylist_mask_doc, NULL}, - {"away_check", (getter)PyNotifylist_away_check_get, NULL, - PyNotifylist_away_check_doc, NULL}, - {"idle_check_time", (getter)PyNotifylist_idle_check_time_get, NULL, - PyNotifylist_idle_check_time_doc, NULL}, - {NULL} -}; - -/* Methods */ -PyDoc_STRVAR(PyNotifylist_ircnets_doc, - "ircnets() -> list of str\n" - "\n" - "Return list of ircnets the notify is checked\n" -); -static PyObject *PyNotifylist_ircnets(PyNotifylist *self, PyObject *args) -{ - PyObject *list; - char **nets; - - RET_NULL_IF_INVALID(self->data); - - nets = NOTIFYLIST(self->data)->ircnets; - list = PyList_New(0); - if (!list) - return NULL; - - while (nets && *nets) - { - int ret; - PyObject *str = PyString_FromString(*nets); - - if (!str) - { - Py_DECREF(list); - return NULL; - } - - ret = PyList_Append(list, str); - Py_DECREF(str); - if (ret != 0) - { - Py_DECREF(list); - return NULL; - } - - nets++; - } - - return list; -} - -PyDoc_STRVAR(PyNotifylist_ircnets_match_doc, - "ircnets_match(ircnet) -> bool\n" - "\n" - "Return True if notify is checked in ircnet\n" -); -static PyObject *PyNotifylist_ircnets_match(PyNotifylist *self, PyObject *args, PyObject *kwds) -{ - static char *kwlist[] = {"ircnet", NULL}; - char *ircnet = ""; - - RET_NULL_IF_INVALID(self->data); - - if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, - &ircnet)) - return NULL; - - return PyBool_FromLong(notifylist_ircnets_match(self->data, ircnet)); -} - -/* Methods for object */ -static PyMethodDef PyNotifylist_methods[] = { - {"ircnets", (PyCFunction)PyNotifylist_ircnets, METH_NOARGS, - PyNotifylist_ircnets_doc}, - {"ircnets_match", (PyCFunction)PyNotifylist_ircnets_match, METH_VARARGS | METH_KEYWORDS, - PyNotifylist_ircnets_match_doc}, - {NULL} /* Sentinel */ -}; - -PyTypeObject PyNotifylistType = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "Notifylist", /*tp_name*/ - sizeof(PyNotifylist), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - (destructor)PyNotifylist_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash */ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ - "PyNotifylist objects", /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - PyNotifylist_methods, /* tp_methods */ - 0, /* tp_members */ - PyNotifylist_getseters, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - 0, /* tp_init */ - 0, /* tp_alloc */ - PyNotifylist_new, /* tp_new */ -}; - - -/* window item wrapper factory function */ -PyObject *pynotifylist_new(void *notifylist) -{ - PyNotifylist *pynotifylist; - - pynotifylist = py_inst(PyNotifylist, PyNotifylistType); - if (!pynotifylist) - return NULL; - - pynotifylist->data = notifylist; - pynotifylist->cleanup_installed = 1; - signal_add_last_data("notifylist remove", notifylist_cleanup, pynotifylist); - - return (PyObject *)pynotifylist; -} - -int notifylist_object_init(void) -{ - g_return_val_if_fail(py_module != NULL, 0); - - if (PyType_Ready(&PyNotifylistType) < 0) - return 0; - - Py_INCREF(&PyNotifylistType); - PyModule_AddObject(py_module, "Notifylist", (PyObject *)&PyNotifylistType); - - return 1; -} |
