summaryrefslogtreecommitdiffstats
path: root/objects
diff options
context:
space:
mode:
authorChristopher Davis <loafier@gmail.com>2006-08-12 22:16:53 +0000
committerChristopher Davis <loafier@gmail.com>2006-08-12 22:16:53 +0000
commit3a028090359e5d5d24ccbfc11d9b6ff5681aab4f (patch)
tree0cfb8ec1eb8a49366fc663bef00bf4dfb1f7c307 /objects
parentf13ea25509e932d426ebd69d90368fe9b1d4c1ab (diff)
downloadirssi-python-3a028090359e5d5d24ccbfc11d9b6ff5681aab4f.tar.gz
irssi-python-3a028090359e5d5d24ccbfc11d9b6ff5681aab4f.tar.xz
irssi-python-3a028090359e5d5d24ccbfc11d9b6ff5681aab4f.zip
directory structure change
git-svn-id: http://svn.irssi.org/repos/irssi-python@4312 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'objects')
-rw-r--r--objects/Makefile28
-rw-r--r--objects/ban-object.c155
-rw-r--r--objects/ban-object.h18
-rw-r--r--objects/base-objects.c235
-rw-r--r--objects/base-objects.h105
-rw-r--r--objects/channel-object.c379
-rw-r--r--objects/channel-object.h22
-rw-r--r--objects/chatnet-object.c182
-rw-r--r--objects/chatnet-object.h22
-rw-r--r--objects/command-object.c145
-rw-r--r--objects/command-object.h18
-rw-r--r--objects/connect-object.c198
-rw-r--r--objects/connect-object.h22
-rw-r--r--objects/dcc-chat-object.c137
-rw-r--r--objects/dcc-chat-object.h21
-rw-r--r--objects/dcc-get-object.c138
-rw-r--r--objects/dcc-get-object.h18
-rw-r--r--objects/dcc-object.c347
-rw-r--r--objects/dcc-object.h24
-rw-r--r--objects/dcc-send-object.c138
-rw-r--r--objects/dcc-send-object.h18
-rw-r--r--objects/factory.c326
-rw-r--r--objects/factory.h58
-rw-r--r--objects/ignore-object.c284
-rw-r--r--objects/ignore-object.h21
-rw-r--r--objects/irc-channel-object.c173
-rw-r--r--objects/irc-channel-object.h21
-rw-r--r--objects/irc-connect-object.c86
-rw-r--r--objects/irc-connect-object.h21
-rw-r--r--objects/irc-server-object.c491
-rw-r--r--objects/irc-server-object.h21
-rw-r--r--objects/log-object.c477
-rw-r--r--objects/log-object.h21
-rw-r--r--objects/logitem-object.c156
-rw-r--r--objects/logitem-object.h21
-rw-r--r--objects/main-window-object.c199
-rw-r--r--objects/main-window-object.h20
-rw-r--r--objects/netsplit-channel-object.c170
-rw-r--r--objects/netsplit-channel-object.h21
-rw-r--r--objects/netsplit-object.c184
-rw-r--r--objects/netsplit-object.h19
-rw-r--r--objects/netsplit-server-object.c157
-rw-r--r--objects/netsplit-server-object.h18
-rw-r--r--objects/nick-object.c237
-rw-r--r--objects/nick-object.h22
-rw-r--r--objects/notifylist-object.c221
-rw-r--r--objects/notifylist-object.h18
-rw-r--r--objects/process-object.c222
-rw-r--r--objects/process-object.h22
-rw-r--r--objects/pyscript-object.c801
-rw-r--r--objects/pyscript-object.h33
-rw-r--r--objects/query-object.c172
-rw-r--r--objects/query-object.h21
-rw-r--r--objects/rawlog-object.c323
-rw-r--r--objects/rawlog-object.h22
-rw-r--r--objects/reconnect-object.c151
-rw-r--r--objects/reconnect-object.h20
-rw-r--r--objects/server-object.c807
-rw-r--r--objects/server-object.h28
-rw-r--r--objects/statusbar-item-object.c253
-rw-r--r--objects/statusbar-item-object.h22
-rw-r--r--objects/textdest-object.c285
-rw-r--r--objects/textdest-object.h24
-rw-r--r--objects/theme-object.c195
-rw-r--r--objects/theme-object.h18
-rw-r--r--objects/window-item-object.c334
-rw-r--r--objects/window-item-object.h26
-rw-r--r--objects/window-object.c678
-rw-r--r--objects/window-object.h21
69 files changed, 0 insertions, 10311 deletions
diff --git a/objects/Makefile b/objects/Makefile
deleted file mode 100644
index 6cc56fb..0000000
--- a/objects/Makefile
+++ /dev/null
@@ -1,28 +0,0 @@
-CC = gcc
-
-PYTHON = /usr/include/python2.4
-IRSSI = /home/chrisd/irssi-0.8.10
-CFLAGS = -fpic -ggdb -Wall -I$(PYTHON) -I$(IRSSI) -I$(IRSSI)/src \
--I$(IRSSI)/src/fe-common/core -I$(IRSSI)/src/core -I$(IRSSI)/src/fe-text \
--I$(IRSSI)/src/irc -I$(IRSSI)/src/irc/core -I$(IRSSI)/src/irc/dcc \
--I$(IRSSI)/src/irc/notifylist -I.. \
-`pkg-config glib-2.0 --cflags`
-
-OBJ = pyscript-object.o base-objects.o window-item-object.o channel-object.o \
-query-object.o server-object.o connect-object.o irc-server-object.o \
-irc-connect-object.o irc-channel-object.o ban-object.o nick-object.o \
-chatnet-object.o reconnect-object.o window-object.o textdest-object.o \
-rawlog-object.o log-object.o logitem-object.o ignore-object.o \
-dcc-object.o dcc-chat-object.o dcc-get-object.o dcc-send-object.o \
-netsplit-object.o netsplit-server-object.o netsplit-channel-object.o \
-notifylist-object.o process-object.o command-object.o theme-object.o \
-statusbar-item-object.o main-window-object.o factory.o
-
-pyobjects.a: $(OBJ)
- ar r pyobjects.a $(OBJ)
-
-%.o: %.c
- $(CC) -c $< $(CFLAGS)
-
-clean:
- rm -f *.o *.so *.a
diff --git a/objects/ban-object.c b/objects/ban-object.c
deleted file mode 100644
index 908bae2..0000000
--- a/objects/ban-object.c
+++ /dev/null
@@ -1,155 +0,0 @@
-#include <Python.h>
-#include "pyirssi_irc.h"
-#include "pymodule.h"
-#include "ban-object.h"
-#include "pycore.h"
-
-/* monitor "ban remove" signal */
-static void ban_cleanup(CHANNEL_REC *chan, BAN_REC *ban)
-{
- PyBan *pyban = signal_get_user_data();
-
- if (ban == pyban->data)
- {
- pyban->data = NULL;
- pyban->cleanup_installed = 0;
- signal_remove_data("ban remove", ban_cleanup, pyban);
- }
-}
-
-static void PyBan_dealloc(PyBan *self)
-{
- if (self->cleanup_installed)
- signal_remove_data("ban remove", ban_cleanup, self);
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-static PyObject *PyBan_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- PyBan *self;
-
- self = (PyBan *)type->tp_alloc(type, 0);
- if (!self)
- return NULL;
-
- return (PyObject *)self;
-}
-
-PyDoc_STRVAR(PyBan_ban_doc,
- "The ban"
-);
-static PyObject *PyBan_ban_get(PyBan *self, void *closure)
-{
- BAN_REC *data = self->data;
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(data->ban);
-}
-
-PyDoc_STRVAR(PyBan_setby_doc,
- "Nick of who set the ban"
-);
-static PyObject *PyBan_setby_get(PyBan *self, void *closure)
-{
- BAN_REC *data = self->data;
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(data->setby);
-}
-
-PyDoc_STRVAR(PyBan_time_doc,
- "Timestamp when ban was set"
-);
-static PyObject *PyBan_time_get(PyBan *self, void *closure)
-{
- BAN_REC *data = self->data;
- RET_NULL_IF_INVALID(self->data);
- return PyLong_FromUnsignedLong(data->time);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyBan_getseters[] = {
- {"ban", (getter)PyBan_ban_get, NULL,
- PyBan_ban_doc, NULL},
- {"setby", (getter)PyBan_setby_get, NULL,
- PyBan_setby_doc, NULL},
- {"time", (getter)PyBan_time_get, NULL,
- PyBan_time_doc, NULL},
- {NULL}
-};
-
-/* Methods for object */
-static PyMethodDef PyBan_methods[] = {
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyBanType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Ban", /*tp_name*/
- sizeof(PyBan), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyBan_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*/
- "PyBan objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyBan_methods, /* tp_methods */
- 0, /* tp_members */
- PyBan_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 */
- PyBan_new, /* tp_new */
-};
-
-
-/* window item wrapper factory function */
-PyObject *pyban_new(void *ban)
-{
- PyBan *pyban;
-
- pyban = py_inst(PyBan, PyBanType);
- if (!pyban)
- return NULL;
-
- pyban->data = ban;
- pyban->cleanup_installed = 1;
- signal_add_last_data("ban remove", ban_cleanup, pyban);
-
- return (PyObject *)pyban;
-}
-
-int ban_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyBanType) < 0)
- return 0;
-
- Py_INCREF(&PyBanType);
- PyModule_AddObject(py_module, "Ban", (PyObject *)&PyBanType);
-
- return 1;
-}
diff --git a/objects/ban-object.h b/objects/ban-object.h
deleted file mode 100644
index 59ec9e7..0000000
--- a/objects/ban-object.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef _BAN_OBJECT_H_
-#define _BAN_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-typedef struct
-{
- PyIrssiFinal_HEAD(void)
-} PyBan;
-
-extern PyTypeObject PyBanType;
-
-int ban_object_init(void);
-PyObject *pyban_new(void *ban);
-#define pyban_check(op) PyObject_TypeCheck(op, &PyBanType)
-
-#endif
diff --git a/objects/base-objects.c b/objects/base-objects.c
deleted file mode 100644
index 42f5cac..0000000
--- a/objects/base-objects.c
+++ /dev/null
@@ -1,235 +0,0 @@
-#include <Python.h>
-#include "structmember.h"
-#include "pymodule.h"
-#include "base-objects.h"
-#include "pyirssi.h"
-
-/* This is the base type for Irssi objects with a type id. The user can find
- * the type name, type id, and check if the object is wrapping a valid Irssi
- * record.
- */
-
-static void PyIrssiBase_dealloc(PyIrssiBase *self)
-{
- self->ob_type->tp_free((PyObject*)self);
-}
-
-static PyObject *PyIrssiBase_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- PyIrssiBase *self;
-
- self = (PyIrssiBase *)type->tp_alloc(type, 0);
- if (!self)
- return NULL;
-
- return (PyObject *)self;
-}
-
-/* Getters */
-PyDoc_STRVAR(PyIrssiBase_type_id_doc,
- "Irssi's type id for object"
-);
-static PyObject *PyIrssiBase_type_id_get(PyIrssiBase *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->type);
-}
-
-PyDoc_STRVAR(PyIrssiBase_type_doc,
- "Irssi's name for object"
-);
-static PyObject *PyIrssiBase_type_get(PyIrssiBase *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->base_name);
-}
-
-PyDoc_STRVAR(PyIrssiBase_valid_doc,
- "True if the object is valid"
-);
-static PyObject *PyIrssiBase_valid_get(PyIrssiBase *self, void *closure)
-{
- if (self->data != NULL)
- Py_RETURN_TRUE;
-
- Py_RETURN_FALSE;
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyIrssiBase_getseters[] = {
- {"type_id", (getter)PyIrssiBase_type_id_get, NULL,
- PyIrssiBase_type_id_doc, NULL},
- {"type", (getter)PyIrssiBase_type_get, NULL,
- PyIrssiBase_type_doc, NULL},
- {"valid", (getter)PyIrssiBase_valid_get, NULL,
- PyIrssiBase_valid_doc, NULL},
- {NULL}
-};
-
-/* Methods for object */
-static PyMethodDef PyIrssiBase_methods[] = {
- {NULL}
-};
-
-PyTypeObject PyIrssiBaseType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "IrssiBase", /*tp_name*/
- sizeof(PyIrssiBase), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyIrssiBase_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*/
- "PyIrssiBase objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyIrssiBase_methods, /* tp_methods */
- 0, /* tp_members */
- PyIrssiBase_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 */
- PyIrssiBase_new, /* tp_new */
-};
-
-
-/* IrssiChatBase is a base type for any object with a chat type. The user
- can find the chat type string name with the chat_type member or
- the type id with the chat_type_id member. It inherits from IrssiBase
- so the type, valid, and type_id members are visible to the user, too */
-
-static void PyIrssiChatBase_dealloc(PyIrssiChatBase *self)
-{
- self->ob_type->tp_free((PyObject*)self);
-}
-
-static PyObject *PyIrssiChatBase_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- PyIrssiChatBase *self;
-
- self = (PyIrssiChatBase *)type->tp_alloc(type, 0);
- if (!self)
- return NULL;
-
- return (PyObject *)self;
-}
-
-/* Getters */
-PyDoc_STRVAR(PyIrssiChatBase_chat_type_id_doc,
- "Chat Type id (int)"
-);
-static PyObject *PyIrssiChatBase_chat_type_id_get(PyIrssiChatBase *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->chat_type);
-}
-
-PyDoc_STRVAR(PyIrssiChatBase_chat_type_doc,
- "Chat name (str)"
-);
-static PyObject *PyIrssiChatBase_chat_type_get(PyIrssiChatBase *self, void *closure)
-{
- CHAT_PROTOCOL_REC *rec;
-
- RET_NULL_IF_INVALID(self->data);
-
- rec = chat_protocol_find_id(self->data->chat_type);
- if (rec)
- RET_AS_STRING_OR_NONE(rec->name);
- else
- Py_RETURN_NONE;
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyIrssiChatBase_getseters[] = {
- {"chat_type_id", (getter)PyIrssiChatBase_chat_type_id_get, NULL,
- PyIrssiChatBase_chat_type_id_doc, NULL},
- {"chat_type", (getter)PyIrssiChatBase_chat_type_get, NULL,
- PyIrssiChatBase_chat_type_doc, NULL},
- {NULL}
-};
-
-/* Methods */
-static PyMethodDef PyIrssiChatBase_methods[] = {
- {NULL}
-};
-
-PyTypeObject PyIrssiChatBaseType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "IrssiChatBase", /*tp_name*/
- sizeof(PyIrssiChatBase), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyIrssiChatBase_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*/
- "PyIrssiChatBase objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyIrssiChatBase_methods, /* tp_methods */
- 0, /* tp_members */
- PyIrssiChatBase_getseters, /* tp_getset */
- &PyIrssiBaseType, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- 0, /* tp_init */
- 0, /* tp_alloc */
- PyIrssiChatBase_new, /* tp_new */
-};
-
-int base_objects_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyIrssiBaseType) < 0)
- return 0;
- if (PyType_Ready(&PyIrssiChatBaseType) < 0)
- return 0;
-
- Py_INCREF(&PyIrssiBaseType);
- Py_INCREF(&PyIrssiChatBaseType);
- PyModule_AddObject(py_module, "IrssiBase", (PyObject *)&PyIrssiBaseType);
- PyModule_AddObject(py_module, "IrssiChatBase", (PyObject *)&PyIrssiChatBaseType);
-
- return 1;
-}
diff --git a/objects/base-objects.h b/objects/base-objects.h
deleted file mode 100644
index 5351ead..0000000
--- a/objects/base-objects.h
+++ /dev/null
@@ -1,105 +0,0 @@
-#ifndef _BASE_OBJECTS_H_
-#define _BASE_OBJECTS_H_
-
-#include <Python.h>
-
-/* data is a pointer to the underlying Irssi record */
-/* base_name is the type name of the object returned from the type member
- it can be SERVER, CHANNEL, QUERY, etc. Note: base_name isn't freed, so
- it cannot point to heap memory */
-/* cleanup_installed: 1 = a cleanup signal handler is installed, 0 = not installed */
-#define PyIrssi_HEAD(type) \
- PyObject_HEAD \
- type *data; \
- const char *base_name; \
- int cleanup_installed;
-
-/* for uninheritable objects without a type id (Ban, Log, etc) */
-#define PyIrssiFinal_HEAD(type) \
- PyObject_HEAD \
- type *data; \
- int cleanup_installed;
-
-/* to access data from any irssi object */
-typedef struct
-{
- PyObject_HEAD
- void *data;
-} PyIrssiObject;
-
-#define DATA(obj) (obj? ((PyIrssiObject *)obj)->data : NULL)
-
-/* base for classes with a type */
-typedef struct
-{
- int type;
-} IRSSI_BASE_REC;
-
-typedef struct
-{
- PyIrssi_HEAD(IRSSI_BASE_REC)
-} PyIrssiBase;
-
-
-/* base for classes with type and a chat type */
-typedef struct
-{
- int type;
- int chat_type;
-} IRSSI_CHAT_REC;
-
-typedef struct
-{
- PyIrssi_HEAD(IRSSI_CHAT_REC)
-} PyIrssiChatBase;
-
-extern PyTypeObject PyIrssiBaseType;
-extern PyTypeObject PyIrssiChatBaseType;
-
-#define pybase_check(op) PyObject_TypeCheck(op, &PyIrssiBaseType)
-#define pychatbase_check(op) PyObject_TypeCheck(op, &PyIrssiChatBaseType)
-#define py_instp(tp, to) ((tp *) (to)->tp_alloc(to, 0))
-#define py_inst(tp, to) py_instp(tp, &to)
-
-int base_objects_init(void);
-
-#define RET_NULL_IF_INVALID(data) \
- if (data == NULL) \
- return PyErr_Format(PyExc_RuntimeError, "wrapped object is invalid")
-
-#define RET_N1_IF_INVALID(data) \
-do { \
- if (data == NULL) \
- { \
- PyErr_Format(PyExc_RuntimeError, "wrapped object is invalid"); \
- return -1; \
- } \
-} while (0)
-
-#define RET_AS_STRING_OR_NONE(str) \
-do { \
- if (str) \
- return PyString_FromString(str); \
- else \
- { \
- Py_INCREF(Py_None); \
- return Py_None; \
- } \
-} while (0)
-
-
-#define RET_AS_STRING_OR_EMPTY(str) return PyString_FromString(str? str : "")
-
-#define RET_AS_OBJ_OR_NONE(obj) \
-do { \
- PyObject *tmp = obj; \
- if (!tmp) \
- tmp = Py_None; \
- Py_INCREF(tmp); \
- return tmp; \
-} while (0)
-
-#define INVALID_MEMBER(member) \
- return PyErr_Format(PyExc_RuntimeError, "invalid member id, %d", member)
-
-#endif
diff --git a/objects/channel-object.c b/objects/channel-object.c
deleted file mode 100644
index fa4edd4..0000000
--- a/objects/channel-object.c
+++ /dev/null
@@ -1,379 +0,0 @@
-#include <Python.h>
-#include "pyirssi.h"
-#include "pymodule.h"
-#include "factory.h"
-#include "channel-object.h"
-#include "pycore.h"
-
-/* monitor "channel destroyed" signal */
-static void chan_cleanup(CHANNEL_REC *chan)
-{
- PyChannel *pychan = signal_get_user_data();
-
- if (chan == pychan->data)
- {
- pychan->data = NULL;
- pychan->cleanup_installed = 0;
- signal_remove_data("channel destroyed", chan_cleanup, pychan);
- }
-}
-
-static void PyChannel_dealloc(PyChannel *self)
-{
- if (self->cleanup_installed)
- signal_remove_data("channel destroyed", chan_cleanup, self);
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-/* Getters */
-PyDoc_STRVAR(PyChannel_topic_doc,
- "Channel topic"
-);
-static PyObject *PyChannel_topic_get(PyChannel *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->topic);
-}
-
-PyDoc_STRVAR(PyChannel_topic_by_doc,
- "Nick who set the topic"
-);
-static PyObject *PyChannel_topic_by_get(PyChannel *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->topic_by);
-}
-
-PyDoc_STRVAR(PyChannel_topic_time_doc,
- "Timestamp when the topic was set"
-);
-static PyObject *PyChannel_topic_time_get(PyChannel *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyLong_FromLong(self->data->topic_time);
-}
-
-PyDoc_STRVAR(PyChannel_no_modes_doc,
- "Channel is modeless"
-);
-static PyObject *PyChannel_no_modes_get(PyChannel *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->no_modes);
-}
-
-PyDoc_STRVAR(PyChannel_mode_doc,
- "Channel mode"
-);
-static PyObject *PyChannel_mode_get(PyChannel *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->mode);
-}
-
-PyDoc_STRVAR(PyChannel_limit_doc,
- "Max. users in channel (+l mode)"
-);
-static PyObject *PyChannel_limit_get(PyChannel *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->limit);
-}
-
-PyDoc_STRVAR(PyChannel_key_doc,
- "Channel key (password)"
-);
-static PyObject *PyChannel_key_get(PyChannel *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->key);
-}
-
-PyDoc_STRVAR(PyChannel_chanop_doc,
- "You are channel operator"
-);
-static PyObject *PyChannel_chanop_get(PyChannel *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->chanop);
-}
-
-PyDoc_STRVAR(PyChannel_names_got_doc,
- "/NAMES list has been received"
-);
-static PyObject *PyChannel_names_got_get(PyChannel *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->names_got);
-}
-
-PyDoc_STRVAR(PyChannel_wholist_doc,
- "/WHO list has been received"
-);
-static PyObject *PyChannel_wholist_get(PyChannel *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->wholist);
-}
-
-PyDoc_STRVAR(PyChannel_synced_doc,
- "Channel is fully synchronized"
-);
-static PyObject *PyChannel_synced_get(PyChannel *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->synced);
-}
-
-PyDoc_STRVAR(PyChannel_joined_doc,
- "JOIN event for this channel has been received"
-);
-static PyObject *PyChannel_joined_get(PyChannel *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->joined);
-}
-
-PyDoc_STRVAR(PyChannel_left_doc,
- "You just left the channel (for 'channel destroyed' event)"
-);
-static PyObject *PyChannel_left_get(PyChannel *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->left);
-}
-
-PyDoc_STRVAR(PyChannel_kicked_doc,
- "You were just kicked out of the channel (for 'channel destroyed' event)"
-);
-static PyObject *PyChannel_kicked_get(PyChannel *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->kicked);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyChannel_getseters[] = {
- {"topic", (getter)PyChannel_topic_get, NULL,
- PyChannel_topic_doc, NULL},
- {"topic_by", (getter)PyChannel_topic_by_get, NULL,
- PyChannel_topic_by_doc, NULL},
- {"topic_time", (getter)PyChannel_topic_time_get, NULL,
- PyChannel_topic_time_doc, NULL},
- {"no_modes", (getter)PyChannel_no_modes_get, NULL,
- PyChannel_no_modes_doc, NULL},
- {"mode", (getter)PyChannel_mode_get, NULL,
- PyChannel_mode_doc, NULL},
- {"limit", (getter)PyChannel_limit_get, NULL,
- PyChannel_limit_doc, NULL},
- {"key", (getter)PyChannel_key_get, NULL,
- PyChannel_key_doc, NULL},
- {"chanop", (getter)PyChannel_chanop_get, NULL,
- PyChannel_chanop_doc, NULL},
- {"names_got", (getter)PyChannel_names_got_get, NULL,
- PyChannel_names_got_doc, NULL},
- {"wholist", (getter)PyChannel_wholist_get, NULL,
- PyChannel_wholist_doc, NULL},
- {"synced", (getter)PyChannel_synced_get, NULL,
- PyChannel_synced_doc, NULL},
- {"joined", (getter)PyChannel_joined_get, NULL,
- PyChannel_joined_doc, NULL},
- {"left", (getter)PyChannel_left_get, NULL,
- PyChannel_left_doc, NULL},
- {"kicked", (getter)PyChannel_kicked_get, NULL,
- PyChannel_kicked_doc, NULL},
- {NULL}
-};
-
-/* Methods */
-PyDoc_STRVAR(PyChannel_nicks_doc,
- "nicks() -> list of Nick objects\n"
- "\n"
- "Return a list of nicks in the channel.\n"
-);
-static PyObject *PyChannel_nicks(PyChannel *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- return py_irssi_chatlist_new(nicklist_getnicks(self->data), 1);
-}
-
-PyDoc_STRVAR(PyChannel_nicks_find_mask_doc,
- "nicks_find_mask(mask) -> Nick object or None\n"
- "\n"
- "Find nick mask from nicklist, wildcards allowed.\n"
-);
-static PyObject *PyChannel_nicks_find_mask(PyChannel *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"mask", NULL};
- char *mask = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &mask))
- return NULL;
-
- return py_irssi_chat_new(nicklist_find_mask(self->data, mask), 1);
-}
-
-PyDoc_STRVAR(PyChannel_nick_find_doc,
- "nick_find(nick) -> Nick object or None\n"
- "\n"
- "Find nick from nicklist.\n"
-);
-static PyObject *PyChannel_nick_find(PyChannel *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"nick", NULL};
- char *nick = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &nick))
- return NULL;
-
- return py_irssi_chat_new(nicklist_find(self->data, nick), 1);
-}
-
-PyDoc_STRVAR(PyChannel_nick_remove_doc,
- "nick_remove(nick) -> None\n"
- "\n"
- "Remove nick from nicklist.\n"
-);
-static PyObject *PyChannel_nick_remove(PyChannel *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"nick", NULL};
- PyObject *nick = NULL;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", kwlist,
- &nick))
- return NULL;
-
- if (!pynick_check(nick))
- return PyErr_Format(PyExc_TypeError, "arg must be nick");
-
- nicklist_remove(self->data, ((PyNick*)nick)->data);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyChannel_nick_insert_obj_doc,
- "nick_insert(nick) -> None\n"
- "\n"
- "Insert nick object into nicklist.\n"
-);
-static PyObject *PyChannel_nick_insert_obj(PyChannel *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"nick", NULL};
- PyObject *nick = NULL;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", kwlist,
- &nick))
- return NULL;
-
- if (!pynick_check(nick))
- return PyErr_Format(PyExc_TypeError, "arg must be nick");
-
- nicklist_insert(self->data, ((PyNick*)nick)->data);
-
- Py_RETURN_NONE;
-}
-
-/* Methods for object */
-static PyMethodDef PyChannel_methods[] = {
- {"nicks", (PyCFunction)PyChannel_nicks, METH_NOARGS,
- PyChannel_nicks_doc},
- {"nicks_find_mask", (PyCFunction)PyChannel_nicks_find_mask, METH_VARARGS | METH_KEYWORDS,
- PyChannel_nicks_find_mask_doc},
- {"nick_find", (PyCFunction)PyChannel_nick_find, METH_VARARGS | METH_KEYWORDS,
- PyChannel_nick_find_doc},
- {"nick_remove", (PyCFunction)PyChannel_nick_remove, METH_VARARGS | METH_KEYWORDS,
- PyChannel_nick_remove_doc},
- {"nick_insert_obj", (PyCFunction)PyChannel_nick_insert_obj, METH_VARARGS | METH_KEYWORDS,
- PyChannel_nick_insert_obj_doc},
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyChannelType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Channel", /*tp_name*/
- sizeof(PyChannel), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyChannel_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*/
- "PyChannel objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyChannel_methods, /* tp_methods */
- 0, /* tp_members */
- PyChannel_getseters, /* tp_getset */
- &PyWindowItemType, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
-};
-
-
-/* window item wrapper factory function */
-PyObject *pychannel_sub_new(void *chan, const char *name, PyTypeObject *type)
-{
- PyObject *pychan;
-
- pychan = pywindow_item_sub_new(chan, name, type);
- if (pychan)
- {
- PyChannel *pych = (PyChannel *)pychan;
- signal_add_last_data("channel destroyed", chan_cleanup, pych);
- pych->cleanup_installed = 1;
- }
-
- return pychan;
-}
-
-PyObject *pychannel_new(void *chan)
-{
- static const char *name = "CHANNEL";
- return pychannel_sub_new(chan, name, &PyChannelType);
-}
-
-int channel_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyChannelType) < 0)
- return 0;
-
- Py_INCREF(&PyChannelType);
- PyModule_AddObject(py_module, "Channel", (PyObject *)&PyChannelType);
-
- return 1;
-}
diff --git a/objects/channel-object.h b/objects/channel-object.h
deleted file mode 100644
index 0858e7b..0000000
--- a/objects/channel-object.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _CHANNEL_OBJECT_H_
-#define _CHANNEL_OBJECT_H_
-
-#include <Python.h>
-#include "window-item-object.h"
-
-/* forward */
-struct _CHANNEL_REC;
-
-typedef struct
-{
- PyWindowItem_HEAD(struct _CHANNEL_REC)
-} PyChannel;
-
-extern PyTypeObject PyChannelType;
-
-int channel_object_init(void);
-PyObject *pychannel_sub_new(void *chan, const char *name, PyTypeObject *type);
-PyObject *pychannel_new(void *chan);
-#define pychannel_check(op) PyObject_TypeCheck(op, &PyChannelType)
-
-#endif
diff --git a/objects/chatnet-object.c b/objects/chatnet-object.c
deleted file mode 100644
index c22f0cb..0000000
--- a/objects/chatnet-object.c
+++ /dev/null
@@ -1,182 +0,0 @@
-#include <Python.h>
-#include "pymodule.h"
-#include "base-objects.h"
-#include "chatnet-object.h"
-#include "pyirssi.h"
-#include "pycore.h"
-#include "pyutils.h"
-
-static void chatnet_cleanup(CHATNET_REC *cn)
-{
- PyChatnet *pycn = signal_get_user_data();
-
- if (cn == pycn->data)
- {
- pycn->data = NULL;
- pycn->cleanup_installed = 0;
- signal_remove_data("chatnet destroyed", chatnet_cleanup, pycn);
- }
-}
-
-static void PyChatnet_dealloc(PyChatnet *self)
-{
- if (self->cleanup_installed)
- signal_remove_data("chatnet destroyed", chatnet_cleanup, self);
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-/* Getters */
-PyDoc_STRVAR(PyChatnet_name_doc,
- "name of chat network"
-);
-static PyObject *PyChatnet_name_get(PyChatnet *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->name);
-}
-
-PyDoc_STRVAR(PyChatnet_nick_doc,
- "if not empty, nick preferred in this network"
-);
-static PyObject *PyChatnet_nick_get(PyChatnet *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->nick);
-}
-
-PyDoc_STRVAR(PyChatnet_username_doc,
- "if not empty, username preferred in this network"
-);
-static PyObject *PyChatnet_username_get(PyChatnet *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->username);
-}
-
-PyDoc_STRVAR(PyChatnet_realname_doc,
- "if not empty, realname preferred in this network"
-);
-static PyObject *PyChatnet_realname_get(PyChatnet *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->realname);
-}
-
-PyDoc_STRVAR(PyChatnet_own_host_doc,
- "address to use when connecting to this network"
-);
-static PyObject *PyChatnet_own_host_get(PyChatnet *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->own_host);
-}
-
-PyDoc_STRVAR(PyChatnet_autosendcmd_doc,
- "command to send after connecting to this network"
-);
-static PyObject *PyChatnet_autosendcmd_get(PyChatnet *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->autosendcmd);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyChatnet_getseters[] = {
- {"name", (getter)PyChatnet_name_get, NULL,
- PyChatnet_name_doc, NULL},
- {"nick", (getter)PyChatnet_nick_get, NULL,
- PyChatnet_nick_doc, NULL},
- {"username", (getter)PyChatnet_username_get, NULL,
- PyChatnet_username_doc, NULL},
- {"realname", (getter)PyChatnet_realname_get, NULL,
- PyChatnet_realname_doc, NULL},
- {"own_host", (getter)PyChatnet_own_host_get, NULL,
- PyChatnet_own_host_doc, NULL},
- {"autosendcmd", (getter)PyChatnet_autosendcmd_get, NULL,
- PyChatnet_autosendcmd_doc, NULL},
- {NULL}
-};
-
-static PyMethodDef PyChatnet_methods[] = {
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyChatnetType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Chatnet", /*tp_name*/
- sizeof(PyChatnet), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyChatnet_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*/
- "PyChatnet objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyChatnet_methods, /* tp_methods */
- 0, /* tp_members */
- PyChatnet_getseters, /* tp_getset */
- &PyIrssiChatBaseType, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
-};
-
-
-/* chatnet factory function */
-PyObject *pychatnet_sub_new(void *cn, PyTypeObject *subclass)
-{
- static const char *name = "CHATNET";
- PyChatnet *pycn = NULL;
-
- pycn = py_instp(PyChatnet, subclass);
- if (!pycn)
- return NULL;
-
- pycn->data = cn;
- pycn->base_name = name;
- signal_add_last_data("chatnet destroyed", chatnet_cleanup, pycn);
- pycn->cleanup_installed = 1;
-
- return (PyObject *)pycn;
-}
-
-PyObject *pychatnet_new(void *cn)
-{
- return pychatnet_sub_new(cn, &PyChatnetType);
-}
-
-int chatnet_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyChatnetType) < 0)
- return 0;
-
- Py_INCREF(&PyChatnetType);
- PyModule_AddObject(py_module, "Chatnet", (PyObject *)&PyChatnetType);
-
- return 1;
-}
diff --git a/objects/chatnet-object.h b/objects/chatnet-object.h
deleted file mode 100644
index 8a6d1fc..0000000
--- a/objects/chatnet-object.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _CHATNET_OBJECT_H_
-#define _CHATNET_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-/* forward */
-struct _CHATNET_REC;
-
-typedef struct
-{
- PyIrssi_HEAD(struct _CHATNET_REC)
-} PyChatnet;
-
-extern PyTypeObject PyChatnetType;
-
-int chatnet_object_init(void);
-PyObject *pychatnet_sub_new(void *cn, PyTypeObject *subclass);
-PyObject *pychatnet_new(void *cn);
-#define pychatnet_check(op) PyObject_TypeCheck(op, &PyChatnetType)
-
-#endif
diff --git a/objects/command-object.c b/objects/command-object.c
deleted file mode 100644
index ad60012..0000000
--- a/objects/command-object.c
+++ /dev/null
@@ -1,145 +0,0 @@
-#include <Python.h>
-#include "pyirssi.h"
-#include "pymodule.h"
-#include "command-object.h"
-#include "pycore.h"
-
-#define COMMAND(cmd) ((COMMAND_REC *)cmd)
-
-/* monitor "commandlist remove" signal */
-static void command_cleanup(COMMAND_REC *command)
-{
- PyCommand *pycommand = signal_get_user_data();
-
- if (command == pycommand->data)
- {
- pycommand->data = NULL;
- pycommand->cleanup_installed = 0;
- signal_remove_data("commandlist remove", command_cleanup, pycommand);
- }
-}
-
-static void PyCommand_dealloc(PyCommand *self)
-{
- if (self->cleanup_installed)
- signal_remove_data("commandlist remove", command_cleanup, self);
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-static PyObject *PyCommand_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- PyCommand *self;
-
- self = (PyCommand *)type->tp_alloc(type, 0);
- if (!self)
- return NULL;
-
- return (PyObject *)self;
-}
-
-/* Getters */
-PyDoc_STRVAR(PyCommand_cmd_doc,
- "Command name"
-);
-static PyObject *PyCommand_cmd_get(PyCommand *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(COMMAND(self->data)->cmd);
-}
-
-PyDoc_STRVAR(PyCommand_category_doc,
- "Category"
-);
-static PyObject *PyCommand_category_get(PyCommand *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(COMMAND(self->data)->category);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyCommand_getseters[] = {
- {"cmd", (getter)PyCommand_cmd_get, NULL,
- PyCommand_cmd_doc, NULL},
- {"category", (getter)PyCommand_category_get, NULL,
- PyCommand_category_doc, NULL},
- {NULL}
-};
-
-/* Methods */
-/* Methods for object */
-static PyMethodDef PyCommand_methods[] = {
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyCommandType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Command", /*tp_name*/
- sizeof(PyCommand), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyCommand_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*/
- "PyCommand objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyCommand_methods, /* tp_methods */
- 0, /* tp_members */
- PyCommand_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 */
- PyCommand_new, /* tp_new */
-};
-
-
-/* command factory function */
-PyObject *pycommand_new(void *command)
-{
- PyCommand *pycommand;
-
- pycommand = py_inst(PyCommand, PyCommandType);
- if (!pycommand)
- return NULL;
-
- pycommand->data = command;
- pycommand->cleanup_installed = 1;
- signal_add_last_data("commandlist remove", command_cleanup, pycommand);
-
- return (PyObject *)pycommand;
-}
-
-int command_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyCommandType) < 0)
- return 0;
-
- Py_INCREF(&PyCommandType);
- PyModule_AddObject(py_module, "Command", (PyObject *)&PyCommandType);
-
- return 1;
-}
diff --git a/objects/command-object.h b/objects/command-object.h
deleted file mode 100644
index e6402cf..0000000
--- a/objects/command-object.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef _COMMAND_OBJECT_H_
-#define _COMMAND_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-typedef struct
-{
- PyIrssiFinal_HEAD(void)
-} PyCommand;
-
-extern PyTypeObject PyCommandType;
-
-int command_object_init(void);
-PyObject *pycommand_new(void *command);
-#define pycommand_check(op) PyObject_TypeCheck(op, &PyCommandType)
-
-#endif
diff --git a/objects/connect-object.c b/objects/connect-object.c
deleted file mode 100644
index 8ef9a29..0000000
--- a/objects/connect-object.c
+++ /dev/null
@@ -1,198 +0,0 @@
-#include <Python.h>
-#include "pymodule.h"
-#include "base-objects.h"
-#include "connect-object.h"
-#include "pyirssi.h"
-#include "pycore.h"
-#include "pyutils.h"
-
-static void connect_cleanup(SERVER_CONNECT_REC *connect)
-{
- PyConnect *pyconn = signal_get_user_data();
-
- /*
- if (server == pyconn->data)
- {
- pyserver->data = NULL;
- pyserver->cleanup_installed = 0;
- signal_remove_data("server disconnected", connect_cleanup, pyserver);
- }
- */
-}
-
-static void PyConnect_dealloc(PyConnect *self)
-{
- if (self->cleanup_installed)
- signal_remove_data("server disconnected", connect_cleanup, self);
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-/* Getters */
-PyDoc_STRVAR(PyConnect_address_doc,
- "Address where we connected (irc.blah.org)"
-);
-static PyObject *PyConnect_address_get(PyConnect *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->address);
-}
-
-PyDoc_STRVAR(PyConnect_port_doc,
- "Port where we're connected"
-);
-static PyObject *PyConnect_port_get(PyConnect *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->port);
-}
-
-PyDoc_STRVAR(PyConnect_chatnet_doc,
- "Chat network"
-);
-static PyObject *PyConnect_chatnet_get(PyConnect *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->chatnet);
-}
-
-PyDoc_STRVAR(PyConnect_password_doc,
- "Password we used in connection."
-);
-static PyObject *PyConnect_password_get(PyConnect *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->password);
-}
-
-PyDoc_STRVAR(PyConnect_wanted_nick_doc,
- "Nick which we would prefer to use"
-);
-static PyObject *PyConnect_wanted_nick_get(PyConnect *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->nick);
-}
-
-PyDoc_STRVAR(PyConnect_username_doc,
- "User name"
-);
-static PyObject *PyConnect_username_get(PyConnect *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->username);
-}
-
-PyDoc_STRVAR(PyConnect_realname_doc,
- "Real name"
-);
-static PyObject *PyConnect_realname_get(PyConnect *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->realname);
-}
-
-/* Get/Set */
-static PyGetSetDef PyConnect_getseters[] = {
- {"address", (getter)PyConnect_address_get, NULL,
- PyConnect_address_doc, NULL},
- {"port", (getter)PyConnect_port_get, NULL,
- PyConnect_port_doc, NULL},
- {"chatnet", (getter)PyConnect_chatnet_get, NULL,
- PyConnect_chatnet_doc, NULL},
- {"password", (getter)PyConnect_password_get, NULL,
- PyConnect_password_doc, NULL},
- {"wanted_nick", (getter)PyConnect_wanted_nick_get, NULL,
- PyConnect_wanted_nick_doc, NULL},
- {"username", (getter)PyConnect_username_get, NULL,
- PyConnect_username_doc, NULL},
- {"realname", (getter)PyConnect_realname_get, NULL,
- PyConnect_realname_doc, NULL},
- {NULL}
-};
-
-PyTypeObject PyConnectType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Connect", /*tp_name*/
- sizeof(PyConnect), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyConnect_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*/
- "PyConnect objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- 0, /* tp_methods */
- 0, /* tp_members */
- PyConnect_getseters, /* tp_getset */
- &PyIrssiChatBaseType, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
-};
-
-
-/* server connect factory function (managed == 0, don't do signal cleanup, 1 == do sig cleanup */
-PyObject *pyconnect_sub_new(void *connect, PyTypeObject *subclass, int managed)
-{
- static const char *CONNECT_TYPE = "SERVER CONNECT";
- PyConnect *pyconn = NULL;
-
- g_return_val_if_fail(connect != NULL, NULL);
-
- pyconn = py_instp(PyConnect, subclass);
- if (!pyconn)
- return NULL;
-
- pyconn->base_name = CONNECT_TYPE;
- pyconn->data = connect;
-
- if (managed)
- {
- //XXX: how to handle cleanup?
- //signal_add_last_data("server disconnected", connect_cleanup, pyconn);
- //pyconn->cleanup_installed = 1;
- }
-
- return (PyObject *)pyconn;
-}
-
-PyObject *pyconnect_new(void *connect, int managed)
-{
- return pyconnect_sub_new(connect, &PyConnectType, managed);
-}
-
-int connect_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyConnectType) < 0)
- return 0;
-
- Py_INCREF(&PyConnectType);
- PyModule_AddObject(py_module, "Connect", (PyObject *)&PyConnectType);
-
- return 1;
-}
diff --git a/objects/connect-object.h b/objects/connect-object.h
deleted file mode 100644
index 53bd509..0000000
--- a/objects/connect-object.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _CONNECT_OBJECT_H_
-#define _CONNECT_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-/* forward */
-struct _SERVER_CONNECT_REC;
-
-typedef struct
-{
- PyIrssi_HEAD(struct _SERVER_CONNECT_REC)
-} PyConnect;
-
-extern PyTypeObject PyConnectType;
-
-int connect_object_init(void);
-PyObject *pyconnect_sub_new(void *connect, PyTypeObject *subtype, int managed);
-PyObject *pyconnect_new(void *connect, int managed);
-#define pyconnect_check(op) PyObject_TypeCheck(op, &PyConnectType)
-
-#endif
diff --git a/objects/dcc-chat-object.c b/objects/dcc-chat-object.c
deleted file mode 100644
index 5cfe796..0000000
--- a/objects/dcc-chat-object.c
+++ /dev/null
@@ -1,137 +0,0 @@
-#include <Python.h>
-#include "pyirssi_irc.h"
-#include "pymodule.h"
-#include "dcc-chat-object.h"
-#include "factory.h"
-#include "pycore.h"
-
-/* inherit destroy and cleanup from DccChat type */
-
-/* Getters */
-PyDoc_STRVAR(PyDccChat_id_doc,
- "Unique identifier - usually same as nick"
-);
-static PyObject *PyDccChat_id_get(PyDccChat *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->id);
-}
-
-PyDoc_STRVAR(PyDccChat_mirc_ctcp_doc,
- "Send CTCPs without the CTCP_MESSAGE prefix"
-);
-static PyObject *PyDccChat_mirc_ctcp_get(PyDccChat *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->mirc_ctcp);
-}
-
-PyDoc_STRVAR(PyDccChat_connection_lost_doc,
- "Other side closed connection"
-);
-static PyObject *PyDccChat_connection_lost_get(PyDccChat *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->connection_lost);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyDccChat_getseters[] = {
- {"id", (getter)PyDccChat_id_get, NULL,
- PyDccChat_id_doc, NULL},
- {"mirc_ctcp", (getter)PyDccChat_mirc_ctcp_get, NULL,
- PyDccChat_mirc_ctcp_doc, NULL},
- {"connection_lost", (getter)PyDccChat_connection_lost_get, NULL,
- PyDccChat_connection_lost_doc, NULL},
- {NULL}
-};
-
-/* Methods */
-PyDoc_STRVAR(PyDccChat_chat_send_doc,
- "chat_send(data) -> None\n"
- "\n"
- "Send data to a dcc chat session.\n"
-);
-static PyObject *PyDccChat_chat_send(PyDccChat *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"data", NULL};
- char *data = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &data))
- return NULL;
-
- dcc_chat_send(self->data, data);
-
- Py_RETURN_NONE;
-}
-
-/* Methods for object */
-static PyMethodDef PyDccChat_methods[] = {
- {"chat_send", (PyCFunction)PyDccChat_chat_send, METH_VARARGS | METH_KEYWORDS,
- PyDccChat_chat_send_doc},
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyDccChatType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "DccChat", /*tp_name*/
- sizeof(PyDccChat), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- 0, /*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*/
- "PyDccChat objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyDccChat_methods, /* tp_methods */
- 0, /* tp_members */
- PyDccChat_getseters, /* tp_getset */
- &PyDccType, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
-};
-
-PyObject *pydcc_chat_new(void *dcc)
-{
- static const char *name = "DCC CHAT";
- return pydcc_sub_new(dcc, name, &PyDccChatType);
-}
-
-int dcc_chat_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyDccChatType) < 0)
- return 0;
-
- Py_INCREF(&PyDccChatType);
- PyModule_AddObject(py_module, "DccChat", (PyObject *)&PyDccChatType);
-
- return 1;
-}
diff --git a/objects/dcc-chat-object.h b/objects/dcc-chat-object.h
deleted file mode 100644
index 955e6be..0000000
--- a/objects/dcc-chat-object.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef _DCC_CHAT_OBJECT_H_
-#define _DCC_CHAT_OBJECT_H_
-
-#include <Python.h>
-#include "dcc-object.h"
-
-/* forward */
-struct CHAT_DCC_REC;
-
-typedef struct
-{
- PyDcc_HEAD(struct CHAT_DCC_REC)
-} PyDccChat;
-
-extern PyTypeObject PyDccChatType;
-
-PyObject *pydcc_chat_new(void *dcc);
-#define pydcc_chat_check(op) PyObject_TypeCheck(op, &PyDccChatType)
-int dcc_chat_object_init(void);
-
-#endif
diff --git a/objects/dcc-get-object.c b/objects/dcc-get-object.c
deleted file mode 100644
index fa7c13a..0000000
--- a/objects/dcc-get-object.c
+++ /dev/null
@@ -1,138 +0,0 @@
-#include <Python.h>
-#include "pyirssi_irc.h"
-#include "pymodule.h"
-#include "dcc-get-object.h"
-#include "factory.h"
-#include "pycore.h"
-
-#define DCC_GET_CAST(rec) ((GET_DCC_REC *)rec)
-
-/* inherit destroy and cleanup from Dcc type */
-
-/* Getters */
-PyDoc_STRVAR(PyDccGet_size_doc,
- "File size"
-);
-static PyObject *PyDccGet_size_get(PyDccGet *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyLong_FromUnsignedLong(DCC_GET_CAST(self->data)->size);
-}
-
-PyDoc_STRVAR(PyDccGet_skipped_doc,
- "Bytes skipped from start (resuming file)"
-);
-static PyObject *PyDccGet_skipped_get(PyDccGet *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyLong_FromUnsignedLong(DCC_GET_CAST(self->data)->skipped);
-}
-
-PyDoc_STRVAR(PyDccGet_get_type_doc,
- "What to do if file exists? 0=default, 1=rename, 2=overwrite, 3=resume"
-);
-static PyObject *PyDccGet_get_type_get(PyDccGet *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(DCC_GET_CAST(self->data)->get_type);
-}
-
-PyDoc_STRVAR(PyDccGet_file_doc,
- "The real file name which we use."
-);
-static PyObject *PyDccGet_file_get(PyDccGet *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(DCC_GET_CAST(self->data)->file);
-}
-
-PyDoc_STRVAR(PyDccGet_file_quoted_doc,
- "true if file name was received quoted (\"file name\")"
-);
-static PyObject *PyDccGet_file_quoted_get(PyDccGet *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(DCC_GET_CAST(self->data)->file_quoted);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyDccGet_getseters[] = {
- {"size", (getter)PyDccGet_size_get, NULL,
- PyDccGet_size_doc, NULL},
- {"skipped", (getter)PyDccGet_skipped_get, NULL,
- PyDccGet_skipped_doc, NULL},
- {"get_type", (getter)PyDccGet_get_type_get, NULL,
- PyDccGet_get_type_doc, NULL},
- {"file", (getter)PyDccGet_file_get, NULL,
- PyDccGet_file_doc, NULL},
- {"file_quoted", (getter)PyDccGet_file_quoted_get, NULL,
- PyDccGet_file_quoted_doc, NULL},
- {NULL}
-};
-
-/* Methods */
-/* Methods for object */
-static PyMethodDef PyDccGet_methods[] = {
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyDccGetType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "DccGet", /*tp_name*/
- sizeof(PyDccGet), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- 0, /*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*/
- "PyDccGet objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyDccGet_methods, /* tp_methods */
- 0, /* tp_members */
- PyDccGet_getseters, /* tp_getset */
- &PyDccType, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
-};
-
-PyObject *pydcc_get_new(void *dcc)
-{
- static const char *name = "DCC GET";
- return pydcc_sub_new(dcc, name, &PyDccGetType);
-}
-
-int dcc_get_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyDccGetType) < 0)
- return 0;
-
- Py_INCREF(&PyDccGetType);
- PyModule_AddObject(py_module, "DccGet", (PyObject *)&PyDccGetType);
-
- return 1;
-}
diff --git a/objects/dcc-get-object.h b/objects/dcc-get-object.h
deleted file mode 100644
index 532b854..0000000
--- a/objects/dcc-get-object.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef _DCC_GET_OBJECT_H_
-#define _DCC_GET_OBJECT_H_
-
-#include <Python.h>
-#include "dcc-object.h"
-
-typedef struct
-{
- PyDcc_HEAD(void)
-} PyDccGet;
-
-extern PyTypeObject PyDccGetType;
-
-PyObject *pydcc_get_new(void *dcc);
-#define pydcc_get_check(op) PyObject_TypeCheck(op, &PyDccGetType)
-int dcc_get_object_init(void);
-
-#endif
diff --git a/objects/dcc-object.c b/objects/dcc-object.c
deleted file mode 100644
index 95a3a4a..0000000
--- a/objects/dcc-object.c
+++ /dev/null
@@ -1,347 +0,0 @@
-#include <Python.h>
-#include "pyirssi_irc.h"
-#include "pymodule.h"
-#include "dcc-object.h"
-#include "factory.h"
-#include "pycore.h"
-
-
-/* monitor "dcc destroyed signal" */
-static void dcc_cleanup(DCC_REC *dcc)
-{
- PyDcc *pydcc = signal_get_user_data();
-
- if (dcc == pydcc->data)
- {
- pydcc->data = NULL;
- pydcc->cleanup_installed = 0;
- signal_remove_data("dcc destroyed", dcc_cleanup, pydcc);
- }
-}
-
-static void PyDcc_dealloc(PyDcc *self)
-{
- if (self->cleanup_installed)
- signal_remove_data("dcc destroyed", dcc_cleanup, self);
-
- Py_XDECREF(self->server);
- Py_XDECREF(self->chat);
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-/* Getters */
-PyDoc_STRVAR(PyDcc_orig_type_doc,
- "Original DCC type that was sent to us - same as type except GET and SEND are swapped"
-);
-static PyObject *PyDcc_orig_type_get(PyDcc *self, void *closure)
-{
- const char *type;
-
- RET_NULL_IF_INVALID(self->data);
-
- type = module_find_id_str("DCC", DCC(self->data)->orig_type);
- RET_AS_STRING_OR_NONE(type);
-}
-
-PyDoc_STRVAR(PyDcc_created_doc,
- "Time stamp when the DCC record was created"
-);
-static PyObject *PyDcc_created_get(PyDcc *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyLong_FromUnsignedLong(DCC(self->data)->created);
-}
-
-PyDoc_STRVAR(PyDcc_server_doc,
- "Server record where the DCC was initiated."
-);
-static PyObject *PyDcc_server_get(PyDcc *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_OBJ_OR_NONE(self->server);
-}
-
-PyDoc_STRVAR(PyDcc_servertag_doc,
- "Tag of the server where the DCC was initiated."
-);
-static PyObject *PyDcc_servertag_get(PyDcc *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(DCC(self->data)->servertag);
-}
-
-PyDoc_STRVAR(PyDcc_mynick_doc,
- "Our nick to use in DCC chat."
-);
-static PyObject *PyDcc_mynick_get(PyDcc *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(DCC(self->data)->mynick);
-}
-
-PyDoc_STRVAR(PyDcc_nick_doc,
- "Other side's nick name."
-);
-static PyObject *PyDcc_nick_get(PyDcc *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(DCC(self->data)->nick);
-}
-
-PyDoc_STRVAR(PyDcc_chat_doc,
- "Dcc chat record if the request came through DCC chat"
-);
-static PyObject *PyDcc_chat_get(PyDcc *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_OBJ_OR_NONE(self->chat);
-}
-
-PyDoc_STRVAR(PyDcc_target_doc,
- "Who the request was sent to - your nick, channel or empty if you sent the request"
-);
-static PyObject *PyDcc_target_get(PyDcc *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(DCC(self->data)->target);
-}
-
-PyDoc_STRVAR(PyDcc_arg_doc,
- "Given argument .. file name usually"
-);
-static PyObject *PyDcc_arg_get(PyDcc *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(DCC(self->data)->arg);
-}
-
-PyDoc_STRVAR(PyDcc_addr_doc,
- "Other side's IP address."
-);
-static PyObject *PyDcc_addr_get(PyDcc *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(DCC(self->data)->addrstr);
-}
-
-PyDoc_STRVAR(PyDcc_port_doc,
- "Port we're connecting in."
-);
-static PyObject *PyDcc_port_get(PyDcc *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(DCC(self->data)->port);
-}
-
-PyDoc_STRVAR(PyDcc_starttime_doc,
- "Unix time stamp when the DCC transfer was started"
-);
-static PyObject *PyDcc_starttime_get(PyDcc *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyLong_FromUnsignedLong(DCC(self->data)->starttime);
-}
-
-PyDoc_STRVAR(PyDcc_transfd_doc,
- "Bytes transferred"
-);
-static PyObject *PyDcc_transfd_get(PyDcc *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyLong_FromUnsignedLong(DCC(self->data)->transfd);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyDcc_getseters[] = {
- {"orig_type", (getter)PyDcc_orig_type_get, NULL,
- PyDcc_orig_type_doc, NULL},
- {"created", (getter)PyDcc_created_get, NULL,
- PyDcc_created_doc, NULL},
- {"server", (getter)PyDcc_server_get, NULL,
- PyDcc_server_doc, NULL},
- {"servertag", (getter)PyDcc_servertag_get, NULL,
- PyDcc_servertag_doc, NULL},
- {"mynick", (getter)PyDcc_mynick_get, NULL,
- PyDcc_mynick_doc, NULL},
- {"nick", (getter)PyDcc_nick_get, NULL,
- PyDcc_nick_doc, NULL},
- {"chat", (getter)PyDcc_chat_get, NULL,
- PyDcc_chat_doc, NULL},
- {"target", (getter)PyDcc_target_get, NULL,
- PyDcc_target_doc, NULL},
- {"arg", (getter)PyDcc_arg_get, NULL,
- PyDcc_arg_doc, NULL},
- {"addr", (getter)PyDcc_addr_get, NULL,
- PyDcc_addr_doc, NULL},
- {"port", (getter)PyDcc_port_get, NULL,
- PyDcc_port_doc, NULL},
- {"starttime", (getter)PyDcc_starttime_get, NULL,
- PyDcc_starttime_doc, NULL},
- {"transfd", (getter)PyDcc_transfd_get, NULL,
- PyDcc_transfd_doc, NULL},
- {NULL}
-};
-
-/* Methods */
-PyDoc_STRVAR(PyDcc_destroy_doc,
- "destroy() -> None\n"
- "\n"
- "Destroy DCC connection\n"
-);
-static PyObject *PyDcc_destroy(PyDcc *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- dcc_destroy(DCC(self->data));
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyDcc_reject_doc,
- "reject() -> None\n"
- "\n"
- "?\n"
-);
-static PyObject *PyDcc_reject(PyDcc *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"server", NULL};
- PyObject *server = NULL;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", kwlist,
- &server))
- return NULL;
-
- if (!pyirc_server_check(server))
- return PyErr_Format(PyExc_TypeError, "arg must be IRC server object");
-
- dcc_reject(self->data, ((PyIrcServer*)server)->data);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyDcc_close_doc,
- "close() -> None\n"
- "\n"
- "Close and destroy DCC connection.\n"
-);
-static PyObject *PyDcc_close(PyDcc *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- dcc_close(self->data);
-
- Py_RETURN_NONE;
-}
-
-/* Methods for object */
-static PyMethodDef PyDcc_methods[] = {
- {"destroy", (PyCFunction)PyDcc_destroy, METH_NOARGS,
- PyDcc_destroy_doc},
- {"reject", (PyCFunction)PyDcc_reject, METH_VARARGS | METH_KEYWORDS,
- PyDcc_reject_doc},
- {"close", (PyCFunction)PyDcc_close, METH_NOARGS,
- PyDcc_close_doc},
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyDccType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Dcc", /*tp_name*/
- sizeof(PyDcc), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyDcc_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*/
- "PyDcc objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyDcc_methods, /* tp_methods */
- 0, /* tp_members */
- PyDcc_getseters, /* tp_getset */
- &PyIrssiBaseType, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
-};
-
-
-/* Dcc factory function */
-PyObject *pydcc_sub_new(void *dcc, const char *name, PyTypeObject *subclass)
-{
- PyObject *chat = NULL, *server = NULL;
- PyDcc *pydcc;
- DCC_REC *rec = dcc;
-
- server = py_irssi_chat_new(rec->server, 1);
- if (!server)
- return NULL;
-
- chat = py_irssi_chat_new(rec->chat, 1);
- if (!chat)
- {
- Py_DECREF(server);
- return NULL;
- }
-
- pydcc = py_instp(PyDcc, subclass);
- if (!pydcc)
- {
- Py_DECREF(server);
- Py_DECREF(chat);
- return NULL;
- }
-
- pydcc->data = dcc;
- pydcc->server = server;
- pydcc->chat = chat;
- pydcc->base_name = name;
-
- pydcc->cleanup_installed = 1;
- signal_add_last_data("dcc destroyed", dcc_cleanup, pydcc);
-
- return (PyObject *)pydcc;
-}
-
-PyObject *pydcc_new(void *dcc)
-{
- static const char *name = "DCC";
- return pydcc_sub_new(dcc, name, &PyDccType);
-}
-
-int dcc_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyDccType) < 0)
- return 0;
-
- Py_INCREF(&PyDccType);
- PyModule_AddObject(py_module, "Dcc", (PyObject *)&PyDccType);
-
- return 1;
-}
diff --git a/objects/dcc-object.h b/objects/dcc-object.h
deleted file mode 100644
index d44d3db..0000000
--- a/objects/dcc-object.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef _DCC_OBJECT_H_
-#define _DCC_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-#define PyDcc_HEAD(type) \
- PyIrssi_HEAD(type) \
- PyObject *server; \
- PyObject *chat;
-
-typedef struct
-{
- PyDcc_HEAD(void)
-} PyDcc;
-
-extern PyTypeObject PyDccType;
-
-PyObject *pydcc_sub_new(void *dcc, const char *name, PyTypeObject *subclass);
-PyObject *pydcc_new(void *dcc);
-#define pydcc_check(op) PyObject_TypeCheck(op, &PyDccType)
-int dcc_object_init(void);
-
-#endif
diff --git a/objects/dcc-send-object.c b/objects/dcc-send-object.c
deleted file mode 100644
index 643f741..0000000
--- a/objects/dcc-send-object.c
+++ /dev/null
@@ -1,138 +0,0 @@
-#include <Python.h>
-#include "pyirssi_irc.h"
-#include "pymodule.h"
-#include "dcc-send-object.h"
-#include "factory.h"
-#include "pycore.h"
-
-#define DCC_SEND_CAST(rec) ((SEND_DCC_REC *)rec)
-
-/* inherit destroy and cleanup from Dcc type */
-
-/* Getters */
-PyDoc_STRVAR(PyDccSend_size_doc,
- "File size"
-);
-static PyObject *PyDccSend_size_get(PyDccSend *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyLong_FromUnsignedLong(DCC_SEND_CAST(self->data)->size);
-}
-
-PyDoc_STRVAR(PyDccSend_skipped_doc,
- "Bytes skipped from start (resuming file)"
-);
-static PyObject *PyDccSend_skipped_get(PyDccSend *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyLong_FromUnsignedLong(DCC_SEND_CAST(self->data)->skipped);
-}
-
-PyDoc_STRVAR(PyDccSend_file_quoted_doc,
- "True if file name was received quoted (\"file name\")"
-);
-static PyObject *PyDccSend_file_quoted_get(PyDccSend *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(DCC_SEND_CAST(self->data)->file_quoted);
-}
-
-PyDoc_STRVAR(PyDccSend_waitforend_doc,
- "File is sent, just wait for the replies from the other side"
-);
-static PyObject *PyDccSend_waitforend_get(PyDccSend *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(DCC_SEND_CAST(self->data)->waitforend);
-}
-
-PyDoc_STRVAR(PyDccSend_gotalldata_doc,
- "Got all acks from the other end"
-);
-static PyObject *PyDccSend_gotalldata_get(PyDccSend *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(DCC_SEND_CAST(self->data)->gotalldata);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyDccSend_getseters[] = {
- {"size", (getter)PyDccSend_size_get, NULL,
- PyDccSend_size_doc, NULL},
- {"skipped", (getter)PyDccSend_skipped_get, NULL,
- PyDccSend_skipped_doc, NULL},
- {"file_quoted", (getter)PyDccSend_file_quoted_get, NULL,
- PyDccSend_file_quoted_doc, NULL},
- {"waitforend", (getter)PyDccSend_waitforend_get, NULL,
- PyDccSend_waitforend_doc, NULL},
- {"gotalldata", (getter)PyDccSend_gotalldata_get, NULL,
- PyDccSend_gotalldata_doc, NULL},
- {NULL}
-};
-
-/* Methods */
-/* Methods for object */
-static PyMethodDef PyDccSend_methods[] = {
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyDccSendType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "DccSend", /*tp_name*/
- sizeof(PyDccSend), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- 0, /*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*/
- "PyDccSend objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyDccSend_methods, /* tp_methods */
- 0, /* tp_members */
- PyDccSend_getseters, /* tp_getset */
- &PyDccType, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
-};
-
-PyObject *pydcc_send_new(void *dcc)
-{
- static const char *name = "DCC SEND";
- return pydcc_sub_new(dcc, name, &PyDccSendType);
-}
-
-int dcc_send_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyDccSendType) < 0)
- return 0;
-
- Py_INCREF(&PyDccSendType);
- PyModule_AddObject(py_module, "DccSend", (PyObject *)&PyDccSendType);
-
- return 1;
-}
diff --git a/objects/dcc-send-object.h b/objects/dcc-send-object.h
deleted file mode 100644
index 6303f86..0000000
--- a/objects/dcc-send-object.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef _DCC_SEND_OBJECT_H_
-#define _DCC_SEND_OBJECT_H_
-
-#include <Python.h>
-#include "dcc-object.h"
-
-typedef struct
-{
- PyDcc_HEAD(void)
-} PyDccSend;
-
-extern PyTypeObject PyDccSendType;
-
-PyObject *pydcc_send_new(void *dcc);
-#define pydcc_send_check(op) PyObject_TypeCheck(op, &PyDccSendType)
-int dcc_send_object_init(void);
-
-#endif
diff --git a/objects/factory.c b/objects/factory.c
deleted file mode 100644
index 49336e6..0000000
--- a/objects/factory.c
+++ /dev/null
@@ -1,326 +0,0 @@
-#include <Python.h>
-#include "pyirssi.h"
-#include "factory.h"
-
-/* Irssi object factory works for all items with at least a type member.
- *
- * Use py_irssi_new() or py_irssi_chat_new() to get a new wrapper for an
- * IrssiObject or an IrssiChatObject, respectively.
- *
- * For objects not descending from IrssiObject or IrssiChatObject, you must
- * use the object-specific init function directly.
- */
-
-#define MAKEKEY(type, chat) ((chat << 16 ) | type)
-#define GETTYPE(key) (key & 0xffff)
-#define GETCHAT(key) ((key >> 16) & 0xffff)
-
-
-GHashTable *init_map = NULL;
-
-static int init_objects(void);
-static void register_chat(CHAT_PROTOCOL_REC *rec);
-static void unregister_chat(CHAT_PROTOCOL_REC *rec);
-static void insert_map(int type, int chat_type, InitFunc func);
-static int remove_chat(void *key, void *value, void *chat_typep);
-static void register_nonchat(void);
-static InitFunc find_map(int type, int chat_type);
-
-static int init_objects(void)
-{
- if (!pyscript_init())
- return 0;
-
- /* order is somewhat important here */
- if (!base_objects_init())
- return 0;
-
- if (!window_item_object_init())
- return 0;
-
- if (!channel_object_init())
- return 0;
-
- if (!query_object_init())
- return 0;
-
- if (!server_object_init())
- return 0;
-
- if (!connect_object_init())
- return 0;
-
- if (!irc_server_object_init())
- return 0;
-
- if (!irc_connect_object_init())
- return 0;
-
- if (!irc_channel_object_init())
- return 0;
-
- if (!ban_object_init())
- return 0;
-
- if (!nick_object_init())
- return 0;
-
- if (!chatnet_object_init())
- return 0;
-
- if (!reconnect_object_init())
- return 0;
-
- if (!window_object_init())
- return 0;
-
- if (!textdest_object_init())
- return 0;
-
- if (!rawlog_object_init())
- return 0;
-
- if (!log_object_init())
- return 0;
-
- if (!logitem_object_init())
- return 0;
-
- if (!ignore_object_init())
- return 0;
-
- if (!dcc_object_init())
- return 0;
-
- if (!dcc_chat_object_init())
- return 0;
-
- if (!dcc_get_object_init())
- return 0;
-
- if (!dcc_send_object_init())
- return 0;
-
- if (!netsplit_object_init())
- return 0;
-
- if (!netsplit_server_object_init())
- return 0;
-
- if (!netsplit_channel_object_init())
- return 0;
-
- if (!notifylist_object_init())
- return 0;
-
- if (!process_object_init())
- return 0;
-
- if (!command_object_init())
- return 0;
-
- if (!theme_object_init())
- return 0;
-
- if (!statusbar_item_object_init())
- return 0;
-
- if (!main_window_object_init())
- return 0;
-
- return 1;
-}
-
-static InitFunc find_map(int type, int chat_type)
-{
- unsigned hash;
-
- g_return_val_if_fail(type <= 0xffff, NULL);
- g_return_val_if_fail(chat_type <= 0xffff, NULL);
-
- hash = MAKEKEY(type, chat_type);
- return g_hash_table_lookup(init_map, GUINT_TO_POINTER(hash));
-}
-
-static void insert_map(int type, int chat_type, InitFunc func)
-{
- unsigned hash;
-
- g_return_if_fail(type <= 0xffff);
- g_return_if_fail(chat_type <= 0xffff);
-
- hash = MAKEKEY(type, chat_type);
- g_hash_table_insert(init_map, GUINT_TO_POINTER(hash), func);
-}
-
-static void register_chat(CHAT_PROTOCOL_REC *rec)
-{
- int type;
- int chat_type;
- int is_irc = 0;
-
- /* chat_type == rec->id ??? */
- chat_type = chat_protocol_lookup(rec->name);
- g_return_if_fail(chat_type >= 0 && chat_type < 0xffff);
-
- if (!g_strcasecmp(rec->name, "IRC"))
- is_irc = 1;
-
- type = module_get_uniq_id("SERVER", 0);
- if (is_irc)
- insert_map(type, chat_type, (InitFunc)pyirc_server_new);
- else
- insert_map(type, chat_type, (InitFunc)pyserver_new);
-
- type = module_get_uniq_id("SERVER CONNECT", 0);
- if (is_irc)
- insert_map(type, chat_type, (InitFunc)pyirc_connect_new);
- else
- insert_map(type, chat_type, (InitFunc)pyconnect_new);
-
- type = module_get_uniq_id_str("WINDOW ITEM TYPE", "CHANNEL");
- if (is_irc)
- insert_map(type, chat_type, (InitFunc)pyirc_channel_new);
- else
- insert_map(type, chat_type, (InitFunc)pychannel_new);
-
- type = module_get_uniq_id_str("WINDOW ITEM TYPE", "QUERY");
- insert_map(type, chat_type, (InitFunc)pyquery_new);
-
- type = module_get_uniq_id("CHATNET", 0);
- insert_map(type, chat_type, (InitFunc)pychatnet_new);
-
- type = module_get_uniq_id("NICK", 0);
- insert_map(type, chat_type, (InitFunc)pynick_new);
-}
-
-/* register funcs for objects without a chat type */
-static void register_nonchat(void)
-{
- int type;
- int chat_type = 0xffff;
-
- type = module_get_uniq_id_str("DCC", "CHAT");
- insert_map(type, chat_type, (InitFunc)pydcc_chat_new);
-
- type = module_get_uniq_id_str("DCC", "GET");
- insert_map(type, chat_type, (InitFunc)pydcc_get_new);
-
- type = module_get_uniq_id_str("DCC", "SEND");
- insert_map(type, chat_type, (InitFunc)pydcc_send_new);
-
- type = module_get_uniq_id_str("DCC", "SERVER");
- insert_map(type, chat_type, (InitFunc)pydcc_new);
-}
-
-static int remove_chat(void *key, void *value, void *chat_typep)
-{
- unsigned hash = GPOINTER_TO_UINT(key);
- int chat_type = GPOINTER_TO_INT(chat_type);
-
- if (GETCHAT(hash) == chat_type)
- return TRUE;
-
- return FALSE;
-}
-
-/* remove all items matching chat_type */
-static void unregister_chat(CHAT_PROTOCOL_REC *rec)
-{
- /*int chat_type = chat_protocol_lookup(rec->name);*/
- g_hash_table_foreach_remove(init_map,
- (GHRFunc)remove_chat,
- GINT_TO_POINTER(rec->id));
-}
-
-PyObject *py_irssi_new(void *typeobj, int managed)
-{
- IRSSI_BASE_REC *base = typeobj;
- InitFunc ifunc;
-
- if (!base)
- Py_RETURN_NONE;
-
- ifunc = find_map(base->type, 0xffff);
-
- if (ifunc)
- return ifunc(typeobj, managed);
-
- return PyErr_Format(PyExc_RuntimeError, "no initfunc for object type %d", base->type);
-}
-
-PyObject *py_irssi_chat_new(void *typeobj, int managed)
-{
- IRSSI_CHAT_REC *chat = typeobj;
- InitFunc ifunc;
-
- if (!chat)
- Py_RETURN_NONE;
-
- ifunc = find_map(chat->type, chat->chat_type);
-
- if (ifunc)
- return ifunc(typeobj, managed);
-
- return PyErr_Format(PyExc_RuntimeError, "no initfunc for object type %d, chat_type %d",
- chat->type, chat->chat_type);
-}
-
-PyObject *py_irssi_objlist_new(GSList *node, int managed, InitFunc init)
-{
- PyObject *list = NULL;
-
- list = PyList_New(0);
- if (!list)
- goto error;
-
- for (; node != NULL; node = node->next)
- {
- int ret;
- PyObject *obj = init(node->data, managed);
-
- if (!obj)
- goto error;
-
- ret = PyList_Append(list, obj);
- Py_DECREF(obj);
-
- if (ret != 0)
- goto error;
- }
-
- return list;
-
-error:
- Py_XDECREF(list);
- return NULL;
-}
-
-int factory_init(void)
-{
- g_return_val_if_fail(init_map == NULL, 0);
-
- if (!init_objects())
- return 0;
-
- init_map = g_hash_table_new(g_direct_hash, g_direct_equal);
- g_slist_foreach(chat_protocols, (GFunc) register_chat, NULL);
- register_nonchat();
-
- signal_add("chat protocol created", (SIGNAL_FUNC) register_chat);
- signal_add("chat protocol destroyed", (SIGNAL_FUNC) unregister_chat);
-
- return 1;
-}
-
-void factory_deinit(void)
-{
- g_return_if_fail(init_map != NULL);
-
- g_hash_table_destroy(init_map);
- init_map = NULL;
-
- signal_remove("chat protocol created", (SIGNAL_FUNC) register_chat);
- signal_remove("chat protocol destroyed", (SIGNAL_FUNC) unregister_chat);
-}
-
diff --git a/objects/factory.h b/objects/factory.h
deleted file mode 100644
index 9d4bd79..0000000
--- a/objects/factory.h
+++ /dev/null
@@ -1,58 +0,0 @@
-#ifndef _FACTORY_H_
-#define _FACTORY_H_
-
-#include <Python.h>
-#include "pyscript-object.h"
-#include "base-objects.h"
-#include "window-item-object.h"
-#include "channel-object.h"
-#include "query-object.h"
-#include "server-object.h"
-#include "connect-object.h"
-#include "irc-server-object.h"
-#include "irc-connect-object.h"
-#include "irc-channel-object.h"
-#include "ban-object.h"
-#include "nick-object.h"
-#include "chatnet-object.h"
-#include "reconnect-object.h"
-#include "window-object.h"
-#include "textdest-object.h"
-#include "rawlog-object.h"
-#include "log-object.h"
-#include "logitem-object.h"
-#include "ignore-object.h"
-#include "dcc-object.h"
-#include "dcc-chat-object.h"
-#include "dcc-get-object.h"
-#include "dcc-send-object.h"
-#include "netsplit-object.h"
-#include "netsplit-server-object.h"
-#include "netsplit-channel-object.h"
-#include "notifylist-object.h"
-#include "process-object.h"
-#include "command-object.h"
-#include "theme-object.h"
-#include "statusbar-item-object.h"
-#include "main-window-object.h"
-
-int factory_init(void);
-void factory_deinit(void);
-
-/*managed == 1: object invalidates itself
- *managed == 0: caller responsible for invalidating object
- *XXX: most objects invalidate themselves, ignoring "managed" switch,
- * and some are never managed (Reconnect)
- */
-
-/* For objects with a type member but no chat_type */
-PyObject *py_irssi_new(void *typeobj, int managed);
-/* For objects with both type and chat_type members */
-PyObject *py_irssi_chat_new(void *typeobj, int managed);
-
-typedef PyObject *(*InitFunc)(void *, int);
-PyObject *py_irssi_objlist_new(GSList *node, int managed, InitFunc init);
-#define py_irssi_chatlist_new(n, m) py_irssi_objlist_new(n, m, py_irssi_chat_new)
-#define py_irssi_list_new(n, m) py_irssi_objlist_new(n, m, py_irssi_new)
-
-#endif
diff --git a/objects/ignore-object.c b/objects/ignore-object.c
deleted file mode 100644
index 979c9b1..0000000
--- a/objects/ignore-object.c
+++ /dev/null
@@ -1,284 +0,0 @@
-#include <Python.h>
-#include "pyirssi_irc.h"
-#include "pymodule.h"
-#include "ignore-object.h"
-#include "factory.h"
-#include "pycore.h"
-
-/* monitor "ignore destroy" signal */
-static void ignore_cleanup(IGNORE_REC *ignore)
-{
- PyIgnore *pyignore = signal_get_user_data();
-
- if (ignore == pyignore->data)
- {
- pyignore->data = NULL;
- pyignore->cleanup_installed = 0;
- signal_remove_data("ignore destroy", ignore_cleanup, pyignore);
- }
-}
-
-static void PyIgnore_dealloc(PyIgnore *self)
-{
- if (self->cleanup_installed)
- signal_remove_data("ignore destroy", ignore_cleanup, self);
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-static PyObject *PyIgnore_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- PyIgnore *self;
-
- self = (PyIgnore *)type->tp_alloc(type, 0);
- if (!self)
- return NULL;
-
- return (PyObject *)self;
-}
-
-/* Getters */
-PyDoc_STRVAR(PyIgnore_mask_doc,
- "Ignore mask"
-);
-static PyObject *PyIgnore_mask_get(PyIgnore *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->mask);
-}
-
-PyDoc_STRVAR(PyIgnore_servertag_doc,
- "Ignore only in server"
-);
-static PyObject *PyIgnore_servertag_get(PyIgnore *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->servertag);
-}
-
-PyDoc_STRVAR(PyIgnore_pattern_doc,
- "Ignore text patern"
-);
-static PyObject *PyIgnore_pattern_get(PyIgnore *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->pattern);
-}
-
-PyDoc_STRVAR(PyIgnore_level_doc,
- "Ignore level"
-);
-static PyObject *PyIgnore_level_get(PyIgnore *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->level);
-}
-
-PyDoc_STRVAR(PyIgnore_exception_doc,
- "This is an exception ignore"
-);
-static PyObject *PyIgnore_exception_get(PyIgnore *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->exception);
-}
-
-PyDoc_STRVAR(PyIgnore_regexp_doc,
- "Regexp pattern matching"
-);
-static PyObject *PyIgnore_regexp_get(PyIgnore *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->regexp);
-}
-
-PyDoc_STRVAR(PyIgnore_fullword_doc,
- "Pattern matches only full words"
-);
-static PyObject *PyIgnore_fullword_get(PyIgnore *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->fullword);
-}
-
-PyDoc_STRVAR(PyIgnore_replies_doc,
- "Ignore replies to nick in channel"
-);
-static PyObject *PyIgnore_replies_get(PyIgnore *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->replies);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyIgnore_getseters[] = {
- {"mask", (getter)PyIgnore_mask_get, NULL,
- PyIgnore_mask_doc, NULL},
- {"servertag", (getter)PyIgnore_servertag_get, NULL,
- PyIgnore_servertag_doc, NULL},
- {"pattern", (getter)PyIgnore_pattern_get, NULL,
- PyIgnore_pattern_doc, NULL},
- {"level", (getter)PyIgnore_level_get, NULL,
- PyIgnore_level_doc, NULL},
- {"exception", (getter)PyIgnore_exception_get, NULL,
- PyIgnore_exception_doc, NULL},
- {"regexp", (getter)PyIgnore_regexp_get, NULL,
- PyIgnore_regexp_doc, NULL},
- {"fullword", (getter)PyIgnore_fullword_get, NULL,
- PyIgnore_fullword_doc, NULL},
- {"replies", (getter)PyIgnore_replies_get, NULL,
- PyIgnore_replies_doc, NULL},
- {NULL}
-};
-
-/* Methods */
-PyDoc_STRVAR(PyIgnore_channels_doc,
- "channels() -> list of str\n"
- "\n"
- "Ignore only in channels (list of names)\n"
-);
-static PyObject *PyIgnore_channels(PyIgnore *self, PyObject *args)
-{
- char **p;
- PyObject *list;
-
- RET_NULL_IF_INVALID(self->data);
-
- list = PyList_New(0);
- if (!list)
- return NULL;
-
- for (p = self->data->channels; *p; p++)
- {
- int ret;
- PyObject *str;
-
- str = PyString_FromString(*p);
- if (!str)
- {
- Py_XDECREF(list);
- return NULL;
- }
-
- ret = PyList_Append(list, str);
- Py_DECREF(str);
- if (ret != 0)
- {
- Py_XDECREF(list);
- return NULL;
- }
- }
-
- return list;
-}
-
-PyDoc_STRVAR(PyIgnore_add_rec_doc,
- "add_rec() -> None\n"
- "\n"
- "Add ignore record"
-);
-static PyObject *PyIgnore_add_rec(PyIgnore *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- ignore_add_rec(self->data);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyIgnore_update_rec_doc,
- "update_rec() -> None\n"
- "\n"
- "Update ignore record in configuration"
-);
-static PyObject *PyIgnore_update_rec(PyIgnore *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- ignore_update_rec(self->data);
-
- Py_RETURN_NONE;
-}
-
-/* Methods for object */
-static PyMethodDef PyIgnore_methods[] = {
- {"add_rec", (PyCFunction)PyIgnore_add_rec, METH_NOARGS,
- PyIgnore_add_rec_doc},
- {"update_rec", (PyCFunction)PyIgnore_update_rec, METH_NOARGS,
- PyIgnore_update_rec_doc},
- {"channels", (PyCFunction)PyIgnore_channels, METH_NOARGS,
- PyIgnore_channels_doc},
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyIgnoreType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Ignore", /*tp_name*/
- sizeof(PyIgnore), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyIgnore_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*/
- "PyIgnore objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyIgnore_methods, /* tp_methods */
- 0, /* tp_members */
- PyIgnore_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 */
- PyIgnore_new, /* tp_new */
-};
-
-
-/* ignore factory function */
-PyObject *pyignore_new(void *ignore)
-{
- PyIgnore *pyignore;
-
- pyignore = py_inst(PyIgnore, PyIgnoreType);
- if (!pyignore)
- return NULL;
-
- pyignore->data = ignore;
- pyignore->cleanup_installed = 1;
- signal_add_last_data("ignore destroy", ignore_cleanup, pyignore);
-
- return (PyObject *)pyignore;
-}
-
-int ignore_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyIgnoreType) < 0)
- return 0;
-
- Py_INCREF(&PyIgnoreType);
- PyModule_AddObject(py_module, "Ignore", (PyObject *)&PyIgnoreType);
-
- return 1;
-}
diff --git a/objects/ignore-object.h b/objects/ignore-object.h
deleted file mode 100644
index 39f7425..0000000
--- a/objects/ignore-object.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef _IGNORE_OBJECT_H_
-#define _IGNORE_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-/* forward */
-struct _IGNORE_REC;
-
-typedef struct
-{
- PyIrssiFinal_HEAD(struct _IGNORE_REC)
-} PyIgnore;
-
-extern PyTypeObject PyIgnoreType;
-
-int ignore_object_init(void);
-PyObject *pyignore_new(void *ignore);
-#define pyignore_check(op) PyObject_TypeCheck(op, &PyIgnoreType)
-
-#endif
diff --git a/objects/irc-channel-object.c b/objects/irc-channel-object.c
deleted file mode 100644
index 5e9531d..0000000
--- a/objects/irc-channel-object.c
+++ /dev/null
@@ -1,173 +0,0 @@
-#include <Python.h>
-#include "pyirssi_irc.h"
-#include "pymodule.h"
-#include "pycore.h"
-#include "irc-channel-object.h"
-#include "factory.h"
-
-/* PyIrcChannel destructor is inherited from PyChannel */
-
-/* specialized getters/setters */
-static PyGetSetDef PyIrcChannel_getseters[] = {
- {NULL}
-};
-
-/* Methods */
-PyDoc_STRVAR(bans_doc,
- "bans() -> list of Ban objects\n"
- "\n"
- "Returns a list of bans in the channel.\n"
-);
-static PyObject *PyIrcChannel_bans(PyIrcChannel *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- return py_irssi_objlist_new(self->data->banlist, 1, (InitFunc)pyban_new);
-}
-
-PyDoc_STRVAR(ban_get_mask_doc,
- "ban_get_mask(nick, ban_type=0) -> str\n"
- "\n"
- "Get ban mask for 'nick'.\n"
-);
-static PyObject *PyIrcChannel_ban_get_mask(PyIrcChannel *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"nick", "ban_type", NULL};
- char *nick, *str;
- int ban_type = 0;
- PyObject *ret;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|i", kwlist, &nick, &ban_type))
- return NULL;
-
- str = ban_get_mask(self->data, nick, ban_type);
- if (!str)
- Py_RETURN_NONE;
-
- ret = PyString_FromString(str);
- g_free(str);
-
- return ret;
-}
-
-PyDoc_STRVAR(banlist_add_doc,
- "banlist_add(ban, nick, time) -> Ban object or None\n"
- "\n"
- "Add a new ban to channel. Return None if duplicate."
-);
-static PyObject *PyIrcChannel_banlist_add(PyIrcChannel *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"ban", "nick", "time", NULL};
- char *ban, *nick;
- time_t btime;
- BAN_REC *newban;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "ssk", kwlist, &ban, &nick, &btime))
- return NULL;
-
- newban = banlist_add(self->data, ban, nick, btime);
- /* XXX: return none or throw error? */
- if (!newban)
- Py_RETURN_NONE;
-
- return pyban_new(newban);
-}
-
-PyDoc_STRVAR(banlist_remove_doc,
- "banlist_remove(ban, nick) -> None\n"
- "\n"
- "Remove a new ban from channel.\n"
-);
-static PyObject *PyIrcChannel_banlist_remove(PyIrcChannel *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"ban", "nick", NULL};
- char *ban, *nick;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "ss", kwlist, &ban, &nick))
- return NULL;
-
- banlist_remove(self->data, ban, nick);
- Py_RETURN_NONE;
-}
-
-/* Methods for object */
-static PyMethodDef PyIrcChannel_methods[] = {
- {"bans", (PyCFunction)PyIrcChannel_bans, METH_NOARGS,
- bans_doc},
- {"ban_get_mask", (PyCFunction)PyIrcChannel_ban_get_mask, METH_VARARGS | METH_KEYWORDS,
- ban_get_mask_doc},
- {"banlist_add", (PyCFunction)PyIrcChannel_banlist_add, METH_VARARGS | METH_KEYWORDS,
- banlist_add_doc},
- {"banlist_remove", (PyCFunction)PyIrcChannel_banlist_remove, METH_VARARGS | METH_KEYWORDS,
- banlist_remove_doc},
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyIrcChannelType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "IrcChannel", /*tp_name*/
- sizeof(PyIrcChannel), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- 0, /*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*/
- "PyIrcChannel objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyIrcChannel_methods, /* tp_methods */
- 0, /* tp_members */
- PyIrcChannel_getseters, /* tp_getset */
- &PyChannelType, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
-};
-
-
-/* irc channel factory function */
-PyObject *pyirc_channel_new(void *chan)
-{
- static const char *BASE_NAME = "CHANNEL";
- return pychannel_sub_new(chan, BASE_NAME, &PyIrcChannelType);
-}
-
-int irc_channel_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyIrcChannelType) < 0)
- return 0;
-
- Py_INCREF(&PyIrcChannelType);
- PyModule_AddObject(py_module, "IrcChannel", (PyObject *)&PyIrcChannelType);
-
- return 1;
-}
diff --git a/objects/irc-channel-object.h b/objects/irc-channel-object.h
deleted file mode 100644
index a1d845a..0000000
--- a/objects/irc-channel-object.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef _IRC_CHANNEL_OBJECT_H_
-#define _IRC_CHANNEL_OBJECT_H_
-
-#include <Python.h>
-#include "window-item-object.h"
-
-/* forward */
-struct _IRC_CHANNEL_REC;
-
-typedef struct
-{
- PyWindowItem_HEAD(struct _IRC_CHANNEL_REC)
-} PyIrcChannel;
-
-extern PyTypeObject PyIrcChannelType;
-
-int irc_channel_object_init(void);
-PyObject *pyirc_channel_new(void *chan);
-#define pyirc_channel_check(op) PyObject_TypeCheck(op, &PyIrcChannelType)
-
-#endif
diff --git a/objects/irc-connect-object.c b/objects/irc-connect-object.c
deleted file mode 100644
index 5068dea..0000000
--- a/objects/irc-connect-object.c
+++ /dev/null
@@ -1,86 +0,0 @@
-#include <Python.h>
-#include "pymodule.h"
-#include "base-objects.h"
-#include "irc-connect-object.h"
-#include "pyirssi_irc.h"
-#include "pycore.h"
-#include "pyutils.h"
-
-/* cleanup and deallocation handled by Connect base */
-
-/* Getters */
-PyDoc_STRVAR(PyIrcConnect_alternate_nick_doc,
- "Alternate nick to use if default nick is taken"
-);
-static PyObject *PyIrcConnect_alternate_nick_get(PyIrcConnect *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->alternate_nick);
-}
-
-/* Get/Set */
-static PyGetSetDef PyIrcConnect_getseters[] = {
- {"alternate_nick", (getter)PyIrcConnect_alternate_nick_get, NULL,
- PyIrcConnect_alternate_nick_doc, NULL},
- {NULL}
-};
-
-PyTypeObject PyIrcConnectType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "IrcConnect", /*tp_name*/
- sizeof(PyIrcConnect), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- 0, /*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*/
- "PyIrcConnect objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- 0, /* tp_methods */
- 0, /* tp_members */
- PyIrcConnect_getseters, /* tp_getset */
- &PyConnectType, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
-};
-
-PyObject *pyirc_connect_new(void *connect, int managed)
-{
- return pyconnect_sub_new(connect, &PyIrcConnectType, managed);
-}
-
-int irc_connect_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyIrcConnectType) < 0)
- return 0;
-
- Py_INCREF(&PyIrcConnectType);
- PyModule_AddObject(py_module, "IrcConnect", (PyObject *)&PyIrcConnectType);
-
- return 1;
-}
diff --git a/objects/irc-connect-object.h b/objects/irc-connect-object.h
deleted file mode 100644
index 3f6cad4..0000000
--- a/objects/irc-connect-object.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef _IRC_CONNECT_OBJECT_H_
-#define _IRC_CONNECT_OBJECT_H_
-
-#include <Python.h>
-#include "connect-object.h"
-
-/* forward */
-struct _IRC_SERVER_CONNECT_REC;
-
-typedef struct
-{
- PyIrssi_HEAD(struct _IRC_SERVER_CONNECT_REC)
-} PyIrcConnect;
-
-extern PyTypeObject PyIrcConnectType;
-
-int irc_connect_object_init(void);
-PyObject *pyirc_connect_new(void *connect, int managed);
-#define pyirc_connect_check(op) PyObject_TypeCheck(op, &PyIrcConnectType)
-
-#endif
diff --git a/objects/irc-server-object.c b/objects/irc-server-object.c
deleted file mode 100644
index 4e9a28e..0000000
--- a/objects/irc-server-object.c
+++ /dev/null
@@ -1,491 +0,0 @@
-#include <Python.h>
-#include "pymodule.h"
-#include "base-objects.h"
-#include "irc-server-object.h"
-#include "factory.h"
-#include "pyirssi_irc.h"
-#include "pycore.h"
-#include "pyutils.h"
-
-/* cleanup and dealloc inherited from base Server */
-
-/* Getters */
-PyDoc_STRVAR(PyIrcServer_real_address_doc,
- "Address the IRC server gives"
-);
-static PyObject *PyIrcServer_real_address_get(PyIrcServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->real_address);
-}
-
-PyDoc_STRVAR(PyIrcServer_usermode_doc,
- "User mode in server"
-);
-static PyObject *PyIrcServer_usermode_get(PyIrcServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->usermode);
-}
-
-PyDoc_STRVAR(PyIrcServer_userhost_doc,
- "Your user host in server"
-);
-static PyObject *PyIrcServer_userhost_get(PyIrcServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->userhost);
-}
-
-static PyGetSetDef PyIrcServer_getseters[] = {
- {"real_address", (getter)PyIrcServer_real_address_get, NULL,
- PyIrcServer_real_address_doc, NULL},
- {"usermode", (getter)PyIrcServer_usermode_get, NULL,
- PyIrcServer_usermode_doc, NULL},
- {"userhost", (getter)PyIrcServer_userhost_get, NULL,
- PyIrcServer_userhost_doc, NULL},
- {NULL}
-};
-
-/* Methods */
-PyDoc_STRVAR(get_channels_doc,
- "get_channels() -> str\n"
- "\n"
- "Return a string of all channels (and keys, if any have them) in server,\n"
- "like '#a,#b,#c,#d x,b_chan_key,x,x' or just '#e,#f,#g'\n"
-);
-static PyObject *PyIrcServer_get_channels(PyIrcServer *self, PyObject *args)
-{
- char *list;
- PyObject *ret;
-
- RET_NULL_IF_INVALID(self->data);
-
- list = irc_server_get_channels(self->data);
- ret = PyString_FromString(list);
- g_free(list);
-
- return ret;
-}
-
-PyDoc_STRVAR(send_raw_doc,
- "send_raw(cmd) -> None\n"
- "\n"
- "Send raw message to server, it will be flood protected so you\n"
- "don't need to worry about it.\n"
-);
-static PyObject *PyIrcServer_send_raw(PyIrcServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"cmd", NULL};
- char *cmd;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, &cmd))
- return NULL;
-
- irc_send_cmd(self->data, cmd);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(send_raw_now_doc,
- "send_raw_now(cmd) -> None\n"
- "\n"
- "Send raw message to server immediately without flood protection.\n"
-);
-static PyObject *PyIrcServer_send_raw_now(PyIrcServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"cmd", NULL};
- char *cmd;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, &cmd))
- return NULL;
-
- irc_send_cmd_now(self->data, cmd);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(send_raw_split_doc,
- "send_raw_split(cmd, nickarg, max_nicks) -> None\n"
- "\n"
- "Split the `cmd' into several commands so `nickarg' argument has only\n"
- "`max_nicks' number of nicks.\n"
- "\n"
- "Example:\n"
- "server.send_raw_split('KICK #channel nick1,nick2,nick3 :byebye', 3, 2)\n"
- "\n"
- "Irssi will send commands 'KICK #channel nick1,nick2 :byebye' and\n"
- "'KICK #channel nick3 :byebye' to server.\n"
-);
-static PyObject *PyIrcServer_send_raw_split(PyIrcServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"cmd", "nickarg", "max_nicks", NULL};
- char *cmd;
- int nickarg;
- int max_nicks;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "sii", kwlist, &cmd, &nickarg, &max_nicks))
- return NULL;
-
- irc_send_cmd_split(self->data, cmd, nickarg, max_nicks);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(ctcp_send_reply_doc,
- "ctcp_send_reply(data) -> None\n"
- "\n"
- "Send CTCP reply. This will be 'CTCP flood protected' so if there's too\n"
- "many CTCP requests in buffer, this reply might not get sent. The data\n"
- "is the full raw command to be sent to server, like\n"
- "'NOTICE nick :\001VERSION irssi\001'\n"
-);
-static PyObject *PyIrcServer_ctcp_send_reply(PyIrcServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"data", NULL};
- char *data;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, &data))
- return NULL;
-
- ctcp_send_reply(self->data, data);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(isupport_doc,
- "isupport(name) -> str or None\n"
- "\n"
- "Returns the value of the named item in the ISUPPORT (005) numeric to the\n"
- "script. If the item is not present returns undef, if the item has no value\n"
- "then '' is returned use defined server.isupport('name') if you need to\n"
- "check whether a property is present.\n"
- "See http://www.ietf.org/internet-drafts/draft-brocklesby-irc-isupport-01.txt\n"
- "for more information on the ISUPPORT numeric.\n"
-);
-static PyObject *PyIrcServer_isupport(PyIrcServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"name", NULL};
- char *name;
- char *found;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, &name))
- return NULL;
-
- found = g_hash_table_lookup(self->data->isupport, name);
-
- RET_AS_STRING_OR_NONE(found);
-}
-
-PyDoc_STRVAR(PyIrcServer_netsplit_find_doc,
- "netsplit_find(nick, address) -> Netsplit object or None\n"
- "\n"
- "Check if nick!address is on the other side of netsplit. Netsplit records\n"
- "are automatically removed after 30 minutes (current default)..\n"
-);
-static PyObject *PyIrcServer_netsplit_find(PyIrcServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"nick", "address", NULL};
- char *nick = "";
- char *address = "";
- NETSPLIT_REC *ns;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "ss", kwlist,
- &nick, &address))
- return NULL;
-
- ns = netsplit_find(self->data, nick, address);
- if (ns)
- return pynetsplit_new(ns);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyIrcServer_netsplit_find_channel_doc,
- "netsplit_find_channel(nick, address, channel) -> NetsplitChannel object or None\n"
- "\n"
- "Find nick record for nick!address in channel `channel'.\n"
-);
-static PyObject *PyIrcServer_netsplit_find_channel(PyIrcServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"nick", "address", "channel", NULL};
- char *nick = "";
- char *address = "";
- char *channel = "";
- NETSPLIT_CHAN_REC *nsc;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "sss", kwlist,
- &nick, &address, &channel))
- return NULL;
-
- nsc = netsplit_find_channel(self->data, nick, address, channel);
- if (nsc)
- return pynetsplit_channel_new(nsc);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyIrcServer_notifylist_ison_doc,
- "notifylist_ison(nick) -> bool\n"
- "\n"
- "Check if nick is on server\n"
-);
-static PyObject *PyIrcServer_notifylist_ison(PyIrcServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"nick", NULL};
- char *nick = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &nick))
- return NULL;
-
- return PyBool_FromLong(notifylist_ison_server(self->data, nick));
-}
-
-/* expect a list of tuples [('str', 'str'), ...] */
-static GSList *py_event_conv(PyObject *list)
-{
- int i;
- GSList *ret = NULL;
-
- if (!PyList_Check(list))
- {
- PyErr_Format(PyExc_TypeError, "expect a list of tuples of two strings");
- return NULL;
- }
-
- for (i = 0; i < PyList_Size(list); i++)
- {
- char *key;
- char *val;
- PyObject *tup = PyList_GET_ITEM(list, i);
-
- if (!PyTuple_Check(tup) || !PyArg_ParseTuple(tup, "ss", &key, &val))
- {
- GSList *node;
-
- for (node = ret; node; node = node->next)
- g_free(node->data);
-
- g_slist_free(ret);
-
- if (!PyErr_Occurred() || PyErr_ExceptionMatches(PyExc_TypeError))
- {
- PyErr_Clear();
- PyErr_SetString(PyExc_TypeError, "expect a list of tuples of two strings");
- }
-
- return NULL;
- }
-
- ret = g_slist_append(ret, g_strdup(key));
- ret = g_slist_append(ret, g_strdup(val));
- }
-
- return ret;
-}
-
-PyDoc_STRVAR(PyIrcServer_redirect_event_doc,
- "redirect_event(command, signals, arg=None, count=1, remote=-1, failure_signal=None) -> None\n"
- "\n"
- "Specify that the next command sent to server will be redirected.\n"
- "NOTE: This command MUST be called before sending the command to server.\n"
- "\n"
- "`command' - Name of the registered redirection that we're using.\n"
- "\n"
- "`count' - How many times to execute the redirection. Some commands may\n"
- "send multiple stop events, like MODE #a,#b.\n"
- "\n"
- "`arg' - The argument to be compared in event strings. You can give multiple\n"
- "arguments separated with space.\n"
- "\n"
- "`remote' - Specifies if the command is a remote command, -1 = use default.\n"
- "\n"
- "`failure_signal' - If irssi can't find the stop signal for the redirection,\n"
- "this signal is called.\n"
- "\n"
- "`signals' - hash reference with \"event\" => \"redir signal\" entries.\n"
- "If the event is "", all the events belonging to the redirection but not\n"
- "specified here, will be sent there.\n"
- "\n"
- "Example:\n"
- "\n"
- "# ignore all events generated by whois query, except 311.\n"
- "\n"
- "server.redirect_event(\"whois\",\n"
- " remote = 0,\n"
- " arg = \"cras\",\n"
- " signals = [\n"
- " ('event 311', 'redir whois'),\n"
- " ('', 'event empty') \n"
- " ]\n"
- ")\n"
- "server.send_raw(\"WHOIS :cras\")\n"
-);
-static PyObject *PyIrcServer_redirect_event(PyIrcServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"command", "signals", "arg", "count", "remote", "failure_signal", NULL};
- char *command = "";
- int count = 1;
- char *arg = NULL;
- int remote = -1;
- char *failure_signal = NULL;
- PyObject *signals = NULL;
- GSList *gsignals;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "sO|ziiz", kwlist,
- &command, &signals, &arg, &count, &remote, &failure_signal))
- return NULL;
-
- gsignals = py_event_conv(signals);
- if (!gsignals)
- return NULL;
-
- server_redirect_event(self->data, command, count, arg, remote, failure_signal, gsignals);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyIrcServer_redirect_get_signal_doc,
- "redirect_get_signal(event, args) -> str\n"
-);
-static PyObject *PyIrcServer_redirect_get_signal(PyIrcServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"event", "args", NULL};
- char *event = "";
- char *pargs = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "ss", kwlist,
- &event, &pargs))
- return NULL;
-
- RET_AS_STRING_OR_NONE(server_redirect_get_signal(self->data, event, pargs));
-}
-
-PyDoc_STRVAR(PyIrcServer_redirect_peek_signal_doc,
- "redirect_peek_signal(event, args) -> str\n"
-);
-static PyObject *PyIrcServer_redirect_peek_signal(PyIrcServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"event", "args", NULL};
- char *event = "";
- char *pargs = "";
- int redirection;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "ss", kwlist,
- &event, &pargs))
- return NULL;
-
- RET_AS_STRING_OR_NONE(server_redirect_peek_signal(self->data, event, pargs, &redirection));
-}
-
-/* Methods for object */
-static PyMethodDef PyIrcServer_methods[] = {
- {"get_channels", (PyCFunction)PyIrcServer_get_channels, METH_NOARGS,
- get_channels_doc},
- {"send_raw", (PyCFunction)PyIrcServer_send_raw, METH_VARARGS | METH_KEYWORDS,
- send_raw_doc},
- {"send_raw_now", (PyCFunction)PyIrcServer_send_raw_now, METH_VARARGS | METH_KEYWORDS,
- send_raw_now_doc},
- {"send_raw_split", (PyCFunction)PyIrcServer_send_raw_split, METH_VARARGS | METH_KEYWORDS,
- send_raw_split_doc},
- {"ctcp_send_reply", (PyCFunction)PyIrcServer_ctcp_send_reply, METH_VARARGS | METH_KEYWORDS,
- ctcp_send_reply_doc},
- {"isupport", (PyCFunction)PyIrcServer_isupport, METH_VARARGS | METH_KEYWORDS,
- isupport_doc},
- {"netsplit_find", (PyCFunction)PyIrcServer_netsplit_find, METH_VARARGS | METH_KEYWORDS,
- PyIrcServer_netsplit_find_doc},
- {"netsplit_find_channel", (PyCFunction)PyIrcServer_netsplit_find_channel, METH_VARARGS | METH_KEYWORDS,
- PyIrcServer_netsplit_find_channel_doc},
- {"notifylist_ison", (PyCFunction)PyIrcServer_notifylist_ison, METH_VARARGS | METH_KEYWORDS,
- PyIrcServer_notifylist_ison_doc},
- {"redirect_event", (PyCFunction)PyIrcServer_redirect_event, METH_VARARGS | METH_KEYWORDS,
- PyIrcServer_redirect_event_doc},
- {"redirect_get_signal", (PyCFunction)PyIrcServer_redirect_get_signal, METH_VARARGS | METH_KEYWORDS,
- PyIrcServer_redirect_get_signal_doc},
- {"redirect_peek_signal", (PyCFunction)PyIrcServer_redirect_peek_signal, METH_VARARGS | METH_KEYWORDS,
- PyIrcServer_redirect_peek_signal_doc},
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyIrcServerType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "IrcServer", /*tp_name*/
- sizeof(PyIrcServer), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- 0, /*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*/
- "PyIrcServer objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyIrcServer_methods, /* tp_methods */
- 0, /* tp_members */
- PyIrcServer_getseters, /* tp_getset */
- &PyServerType, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
-};
-
-PyObject *pyirc_server_new(void *server)
-{
- return pyserver_sub_new(server, &PyIrcServerType);
-}
-
-int irc_server_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyIrcServerType) < 0)
- return 0;
-
- Py_INCREF(&PyIrcServerType);
- PyModule_AddObject(py_module, "IrcServer", (PyObject *)&PyIrcServerType);
-
- return 1;
-}
diff --git a/objects/irc-server-object.h b/objects/irc-server-object.h
deleted file mode 100644
index b3eb76a..0000000
--- a/objects/irc-server-object.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef _IRC_SERVER_OBJECT_H_
-#define _IRC_SERVER_OBJECT_H_
-
-#include <Python.h>
-#include "server-object.h"
-
-/* forward */
-struct _IRC_SERVER_REC;
-
-typedef struct
-{
- PyServer_HEAD(struct _IRC_SERVER_REC)
-} PyIrcServer;
-
-extern PyTypeObject PyIrcServerType;
-
-int irc_server_object_init(void);
-PyObject *pyirc_server_new(void *server);
-#define pyirc_server_check(op) PyObject_TypeCheck(op, &PyIrcServerType)
-
-#endif
diff --git a/objects/log-object.c b/objects/log-object.c
deleted file mode 100644
index b18f826..0000000
--- a/objects/log-object.c
+++ /dev/null
@@ -1,477 +0,0 @@
-#include <Python.h>
-#include "pyirssi_irc.h"
-#include "pymodule.h"
-#include "log-object.h"
-#include "factory.h"
-#include "pycore.h"
-
-static LOG_ITEM_REC *find_item(LOG_REC *log, PyLogitem *item);
-static void log_cleanup(LOG_REC *log);
-static int logtype(int *type, int target, int window);
-
-/* find/convert a py log item */
-static LOG_ITEM_REC *find_item(LOG_REC *log, PyLogitem *item)
-{
- int type;
- char *name;
- char *servertag = NULL;
-
- if (!item->type || !item->name)
- return NULL;
-
- type = PyInt_AS_LONG(item->type);
- name = PyString_AS_STRING(item->name);
- if (item->servertag)
- servertag = PyString_AS_STRING(item->servertag);
-
- return log_item_find(log, type, name, servertag);
-}
-
-/* monitor "log remove" signal */
-static void log_cleanup(LOG_REC *log)
-{
- PyLog *pylog = signal_get_user_data();
-
- if (log == pylog->data)
- {
- pylog->data = NULL;
- pylog->cleanup_installed = 0;
- signal_remove_data("log remove", log_cleanup, pylog);
- }
-}
-
-static void PyLog_dealloc(PyLog *self)
-{
- if (self->cleanup_installed)
- signal_remove_data("log remove", log_cleanup, self);
-
- if (self->data && !g_slist_find(logs, self->data))
- {
- printtext(NULL, NULL, MSGLEVEL_CRAP, "destroying orphan log %s", self->data->fname);
- log_close(self->data);
- }
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-static PyObject *PyLog_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- PyLog *self;
-
- self = (PyLog *)type->tp_alloc(type, 0);
- if (!self)
- return NULL;
-
- return (PyObject *)self;
-}
-
-/* function to create the log */
-PyDoc_STRVAR(PyLog_doc,
- "__init__(fname, level=MSGLEVEL_ALL)\n"
- "\n"
- "Create a log\n"
-);
-static int PyLog_init(PyLog *self, PyObject *args, PyObject *kwds)
-{
- char *fname;
- int level = MSGLEVEL_ALL;
- LOG_REC *log;
-
- static char *kwlist[] = {"fname", "level", NULL};
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|i", kwlist,
- &fname, &level))
- return -1;
-
- /*XXX: anything better than RuntimeError ? */
- if (self->data || self->cleanup_installed)
- {
- PyErr_Format(PyExc_RuntimeError, "log already opened; close it first");
- return -1;
- }
-
- log = log_create_rec(fname, level);
- if (!log)
- {
- PyErr_Format(PyExc_RuntimeError, "failed to create log");
- return -1;
- }
-
- self->data = log;
- self->cleanup_installed = 1;
- signal_add_last_data("log remove", log_cleanup, self);
-
- return 0;
-}
-
-/* Getters */
-PyDoc_STRVAR(PyLog_fname_doc,
- "Log file name"
-);
-static PyObject *PyLog_fname_get(PyLog *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->fname);
-}
-
-PyDoc_STRVAR(PyLog_real_fname_doc,
- "The actual opened log file (after %d.%m.Y etc. are expanded)"
-);
-static PyObject *PyLog_real_fname_get(PyLog *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->real_fname);
-}
-
-PyDoc_STRVAR(PyLog_opened_doc,
- "Log file is open"
-);
-static PyObject *PyLog_opened_get(PyLog *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyLong_FromUnsignedLong(self->data->opened);
-}
-
-PyDoc_STRVAR(PyLog_level_doc,
- "Log only these levels"
-);
-static PyObject *PyLog_level_get(PyLog *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->level);
-}
-
-PyDoc_STRVAR(PyLog_last_doc,
- "Timestamp when last message was written"
-);
-static PyObject *PyLog_last_get(PyLog *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyLong_FromUnsignedLong(self->data->last);
-}
-
-PyDoc_STRVAR(PyLog_autoopen_doc,
- "Automatically open log at startup"
-);
-static PyObject *PyLog_autoopen_get(PyLog *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->autoopen);
-}
-
-PyDoc_STRVAR(PyLog_failed_doc,
- "Opening log failed last time"
-);
-static PyObject *PyLog_failed_get(PyLog *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->failed);
-}
-
-PyDoc_STRVAR(PyLog_temp_doc,
- "Log isn't saved to config file"
-);
-static PyObject *PyLog_temp_get(PyLog *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->temp);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyLog_getseters[] = {
- {"fname", (getter)PyLog_fname_get, NULL,
- PyLog_fname_doc, NULL},
- {"real_fname", (getter)PyLog_real_fname_get, NULL,
- PyLog_real_fname_doc, NULL},
- {"opened", (getter)PyLog_opened_get, NULL,
- PyLog_opened_doc, NULL},
- {"level", (getter)PyLog_level_get, NULL,
- PyLog_level_doc, NULL},
- {"last", (getter)PyLog_last_get, NULL,
- PyLog_last_doc, NULL},
- {"autoopen", (getter)PyLog_autoopen_get, NULL,
- PyLog_autoopen_doc, NULL},
- {"failed", (getter)PyLog_failed_get, NULL,
- PyLog_failed_doc, NULL},
- {"temp", (getter)PyLog_temp_get, NULL,
- PyLog_temp_doc, NULL},
- {NULL}
-};
-
-/* Methods */
-PyDoc_STRVAR(PyLog_items_doc,
- "items() -> list of Log objects\n"
- "\n"
- "Return a list of log items\n"
-);
-static PyObject *PyLog_items(PyLog *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
- return py_irssi_objlist_new(self->data->items, 1, (InitFunc)pylogitem_new);
-}
-
-PyDoc_STRVAR(PyLog_update_doc,
- "update() -> None\n"
- "\n"
- "Add log to list of logs / save changes to config file.\n"
-);
-static PyObject *PyLog_update(PyLog *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- log_update(self->data);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyLog_close_doc,
- "destroy() -> None\n"
- "\n"
- "Destroy the log file\n"
-);
-static PyObject *PyLog_close(PyLog *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- log_close(self->data);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyLog_start_logging_doc,
- "start_logging() -> None\n"
- "\n"
- "Open log file and start logging.\n"
-);
-static PyObject *PyLog_start_logging(PyLog *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- log_start_logging(self->data);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyLog_stop_logging_doc,
- "stop_logging() -> None\n"
- "\n"
- "Stop and close the log file.\n"
-);
-static PyObject *PyLog_stop_logging(PyLog *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- log_stop_logging(self->data);
-
- Py_RETURN_NONE;
-}
-
-static int logtype(int *type, int target, int window)
-{
- if (target || window)
- {
- if (target && window)
- {
- PyErr_SetString(PyExc_TypeError, "must specify target or window, not both");
- return 0;
- }
-
- *type = target? 0 : 1;
- }
- else if (*type < 0)
- {
- PyErr_SetString(PyExc_TypeError, "must specify type, target, or window");
- return 0;
- }
-
- return 1;
-}
-
-PyDoc_STRVAR(PyLog_item_add_doc,
- "item_add(item, servertag=None, type=0, target=False, window=False) -> None\n"
- "\n"
- "Add a log item to log.\n"
- "\n"
- "Add a target item (nick, chan): \n"
- " item_add('#linux', target=True)\n"
- " item_add('#linux', type=0)\n"
- "\n"
- "Add a window ref: \n"
- " item_add('2', window=True)\n"
- " item_add('2', type=1)\n"
-);
-static PyObject *PyLog_item_add(PyLog *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"item", "servertag", "type", "target", "window", NULL};
- char *item = "";
- char *servertag = NULL;
- int type = 0;
- int target = 0;
- int window = 0;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|ziii", kwlist,
- &item, &servertag, &type, &target, &window))
- return NULL;
-
- if (!logtype(&type, target, window))
- return NULL;
-
- log_item_add(self->data, type, item, servertag);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyLog_item_destroy_doc,
- "item_destroy(item) -> None\n"
- "\n"
- "Remove log item from log.\n"
-);
-static PyObject *PyLog_item_destroy(PyLog *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"item", NULL};
- PyObject *item = NULL;
- LOG_ITEM_REC *li;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", kwlist,
- &item))
- return NULL;
-
- if (!pylogitem_check(item))
- return PyErr_Format(PyExc_TypeError, "arg 1 should be log item");
-
- li = find_item(self->data, (PyLogitem *)item);
- if (!li)
- return PyErr_Format(PyExc_TypeError, "log item invalid or not found");
-
- log_item_destroy(self->data, li);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyLog_item_find_doc,
- "item_find(item, servertag=None, type=-1, target=False, window=False) -> item or None\n"
- "\n"
- "Find item from log.\n"
-);
-static PyObject *PyLog_item_find(PyLog *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"item", "servertag", "type", "target", "window", NULL};
- char *item = "";
- char *server = NULL;
- int type = 0;
- int target = 0;
- int window = 0;
- LOG_ITEM_REC *li;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|ziii", kwlist,
- &item, &server, &type, &target, &window))
- return NULL;
-
- if (!logtype(&type, target, window))
- return NULL;
-
- li = log_item_find(self->data, type, item, server);
- if (li)
- return pylogitem_new(li);
-
- Py_RETURN_NONE;
-}
-
-/* Methods for object */
-static PyMethodDef PyLog_methods[] = {
- {"items", (PyCFunction)PyLog_items, METH_NOARGS,
- PyLog_items_doc},
- {"update", (PyCFunction)PyLog_update, METH_NOARGS,
- PyLog_update_doc},
- {"close", (PyCFunction)PyLog_close, METH_NOARGS,
- PyLog_close_doc},
- {"start_logging", (PyCFunction)PyLog_start_logging, METH_NOARGS,
- PyLog_start_logging_doc},
- {"stop_logging", (PyCFunction)PyLog_stop_logging, METH_NOARGS,
- PyLog_stop_logging_doc},
- {"item_add", (PyCFunction)PyLog_item_add, METH_VARARGS | METH_KEYWORDS,
- PyLog_item_add_doc},
- {"item_destroy", (PyCFunction)PyLog_item_destroy, METH_VARARGS | METH_KEYWORDS,
- PyLog_item_destroy_doc},
- {"item_find", (PyCFunction)PyLog_item_find, METH_VARARGS | METH_KEYWORDS,
- PyLog_item_find_doc},
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyLogType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Log", /*tp_name*/
- sizeof(PyLog), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyLog_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*/
- PyLog_doc, /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyLog_methods, /* tp_methods */
- 0, /* tp_members */
- PyLog_getseters, /* tp_getset */
- 0, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- (initproc)PyLog_init, /* tp_init */
- 0, /* tp_alloc */
- PyLog_new, /* tp_new */
-};
-
-
-/* window item wrapper factory function */
-PyObject *pylog_new(void *log)
-{
- PyLog *pylog;
-
- pylog = (PyLog *)PyLogType.tp_alloc(&PyLogType, 0);
- if (!pylog)
- return NULL;
-
- pylog->data = log;
- pylog->cleanup_installed = 1;
- signal_add_last_data("log remove", log_cleanup, pylog);
-
- return (PyObject *)pylog;
-}
-
-int log_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyLogType) < 0)
- return 0;
-
- Py_INCREF(&PyLogType);
- PyModule_AddObject(py_module, "Log", (PyObject *)&PyLogType);
-
- return 1;
-}
diff --git a/objects/log-object.h b/objects/log-object.h
deleted file mode 100644
index 9893bc5..0000000
--- a/objects/log-object.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef _LOG_OBJECT_H_
-#define _LOG_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-/* forward */
-struct _LOG_REC;
-
-typedef struct
-{
- PyIrssiFinal_HEAD(struct _LOG_REC)
-} PyLog;
-
-extern PyTypeObject PyLogType;
-
-int log_object_init(void);
-PyObject *pylog_new(void *log);
-#define pylog_check(op) PyObject_TypeCheck(op, &PyLogType)
-
-#endif
diff --git a/objects/logitem-object.c b/objects/logitem-object.c
deleted file mode 100644
index 4dc2275..0000000
--- a/objects/logitem-object.c
+++ /dev/null
@@ -1,156 +0,0 @@
-#include <Python.h>
-#include "pyirssi_irc.h"
-#include "pymodule.h"
-#include "logitem-object.h"
-#include "pycore.h"
-
-/* no special cleanup -- value copy is made */
-
-static void PyLogitem_dealloc(PyLogitem *self)
-{
- Py_XDECREF(self->type);
- Py_XDECREF(self->name);
- Py_XDECREF(self->servertag);
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-static PyObject *PyLogitem_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- PyLogitem *self;
-
- self = (PyLogitem *)type->tp_alloc(type, 0);
- if (!self)
- return NULL;
-
- return (PyObject *)self;
-}
-
-/* Getters */
-PyDoc_STRVAR(PyLogitem_type_doc,
- "0=target, 1=window refnum"
-);
-static PyObject *PyLogitem_type_get(PyLogitem *self, void *closure)
-{
- RET_AS_OBJ_OR_NONE(self->type);
-}
-
-PyDoc_STRVAR(PyLogitem_name_doc,
- "Name"
-);
-static PyObject *PyLogitem_name_get(PyLogitem *self, void *closure)
-{
- RET_AS_OBJ_OR_NONE(self->name);
-}
-
-PyDoc_STRVAR(PyLogitem_servertag_doc,
- "Server tag"
-);
-static PyObject *PyLogitem_servertag_get(PyLogitem *self, void *closure)
-{
- RET_AS_OBJ_OR_NONE(self->servertag);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyLogitem_getseters[] = {
- {"type", (getter)PyLogitem_type_get, NULL,
- PyLogitem_type_doc, NULL},
- {"name", (getter)PyLogitem_name_get, NULL,
- PyLogitem_name_doc, NULL},
- {"servertag", (getter)PyLogitem_servertag_get, NULL,
- PyLogitem_servertag_doc, NULL},
- {NULL}
-};
-
-/* Methods for object */
-static PyMethodDef PyLogitem_methods[] = {
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyLogitemType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Logitem", /*tp_name*/
- sizeof(PyLogitem), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyLogitem_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*/
- "PyLogitem objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyLogitem_methods, /* tp_methods */
- 0, /* tp_members */
- PyLogitem_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 */
- PyLogitem_new, /* tp_new */
-};
-
-
-/* log item factory function */
-PyObject *pylogitem_new(void *log)
-{
- LOG_ITEM_REC *li = log;
- PyLogitem *pylog = NULL;
-
- pylog = py_inst(PyLogitem, PyLogitemType);
- if (!pylog)
- return NULL;
-
- pylog->type = PyInt_FromLong(li->type);
- if (!pylog->type)
- goto error;
-
- pylog->name = PyString_FromString(li->name);
- if (!pylog->name)
- goto error;
-
- if (li->servertag)
- {
- pylog->servertag = PyString_FromString(li->servertag);
- if (!pylog->servertag)
- goto error;
- }
-
- return (PyObject *)pylog;
-
-error:
- Py_XDECREF(pylog);
- return NULL;
-}
-
-int logitem_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyLogitemType) < 0)
- return 0;
-
- Py_INCREF(&PyLogitemType);
- PyModule_AddObject(py_module, "Logitem", (PyObject *)&PyLogitemType);
-
- return 1;
-}
diff --git a/objects/logitem-object.h b/objects/logitem-object.h
deleted file mode 100644
index b7fd588..0000000
--- a/objects/logitem-object.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef _LOG_ITEM_OBJECT_H_
-#define _LOG_ITEM_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-typedef struct
-{
- PyObject_HEAD
- PyObject *type;
- PyObject *name;
- PyObject *servertag;
-} PyLogitem;
-
-extern PyTypeObject PyLogitemType;
-
-int logitem_object_init(void);
-PyObject *pylogitem_new(void *log);
-#define pylogitem_check(op) PyObject_TypeCheck(op, &PyLogitemType)
-
-#endif
diff --git a/objects/main-window-object.c b/objects/main-window-object.c
deleted file mode 100644
index 6541f2b..0000000
--- a/objects/main-window-object.c
+++ /dev/null
@@ -1,199 +0,0 @@
-#include <Python.h>
-#include "pyirssi.h"
-#include "pymodule.h"
-#include "main-window-object.h"
-#include "factory.h"
-#include "pycore.h"
-
-#define MW(data) ((MAIN_WINDOW_REC *) data)
-
-/* monitor "mainwindow destroyed" signal */
-static void main_window_cleanup(MAIN_WINDOW_REC *mw)
-{
- PyMainWindow *pymw = signal_get_user_data();
-
- if (mw == pymw->data)
- {
- pymw->data = NULL;
- pymw->cleanup_installed = 0;
- signal_remove_data("mainwindow destroyed", main_window_cleanup, pymw);
- }
-}
-
-static void PyMainWindow_dealloc(PyMainWindow *self)
-{
- if (self->cleanup_installed)
- signal_remove_data("mainwindow destroyed", main_window_cleanup, self);
-
- Py_XDECREF(self->active);
- self->ob_type->tp_free((PyObject*)self);
-}
-
-static PyObject *PyMainWindow_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- PyMainWindow *self;
-
- self = (PyMainWindow *)type->tp_alloc(type, 0);
- if (!self)
- return NULL;
-
- return (PyObject *)self;
-}
-
-/* getters */
-PyDoc_STRVAR(PyMainWindow_active_doc,
- "active window object"
-);
-static PyObject *PyMainWindow_active_get(PyMainWindow *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_OBJ_OR_NONE(self->active);
-}
-
-PyDoc_STRVAR(PyMainWindow_first_line_doc,
- "first line used by this window (0..x) (includes statusbars)"
-);
-static PyObject *PyMainWindow_first_line_get(PyMainWindow *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(MW(self->data)->first_line);
-}
-
-PyDoc_STRVAR(PyMainWindow_last_line_doc,
- "last line used by this window (0..x) (includes statusbars)"
-);
-static PyObject *PyMainWindow_last_line_get(PyMainWindow *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(MW(self->data)->last_line);
-}
-
-PyDoc_STRVAR(PyMainWindow_width_doc,
- "width of the window (includes statusbars)"
-);
-static PyObject *PyMainWindow_width_get(PyMainWindow *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(MW(self->data)->width);
-}
-
-PyDoc_STRVAR(PyMainWindow_height_doc,
- "height of the window (includes statusbars)"
-);
-static PyObject *PyMainWindow_height_get(PyMainWindow *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(MW(self->data)->height);
-}
-
-PyDoc_STRVAR(PyMainWindow_statusbar_lines_doc,
- "???"
-);
-static PyObject *PyMainWindow_statusbar_lines_get(PyMainWindow *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(MW(self->data)->statusbar_lines);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyMainWindow_getseters[] = {
- {"active", (getter)PyMainWindow_active_get, NULL,
- PyMainWindow_active_doc, NULL},
- {"first_line", (getter)PyMainWindow_first_line_get, NULL,
- PyMainWindow_first_line_doc, NULL},
- {"last_line", (getter)PyMainWindow_last_line_get, NULL,
- PyMainWindow_last_line_doc, NULL},
- {"width", (getter)PyMainWindow_width_get, NULL,
- PyMainWindow_width_doc, NULL},
- {"height", (getter)PyMainWindow_height_get, NULL,
- PyMainWindow_height_doc, NULL},
- {"statusbar_lines", (getter)PyMainWindow_statusbar_lines_get, NULL,
- PyMainWindow_statusbar_lines_doc, NULL},
- {NULL}
-};
-
-/* Methods for object */
-static PyMethodDef PyMainWindow_methods[] = {
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyMainWindowType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "MainWindow", /*tp_name*/
- sizeof(PyMainWindow), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyMainWindow_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*/
- "PyMainWindow objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyMainWindow_methods, /* tp_methods */
- 0, /* tp_members */
- PyMainWindow_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 */
- PyMainWindow_new, /* tp_new */
-};
-
-
-/* main window wrapper factory function */
-PyObject *pymain_window_new(MAIN_WINDOW_REC *mw)
-{
- PyObject *pyactive = NULL;
- PyMainWindow *pymw;
-
- pyactive = pywindow_new(mw->active);
- if (!pyactive)
- return NULL;
-
- pymw = py_inst(PyMainWindow, PyMainWindowType);
- if (!pymw)
- {
- Py_DECREF(pyactive);
- return NULL;
- }
-
- pymw->active = pyactive;
- pymw->data = mw;
- pymw->cleanup_installed = 1;
- signal_add_last_data("mainwindow destroyed", main_window_cleanup, pymw);
-
- return (PyObject *)pymw;
-}
-
-int main_window_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyMainWindowType) < 0)
- return 0;
-
- Py_INCREF(&PyMainWindowType);
- PyModule_AddObject(py_module, "MainWindow", (PyObject *)&PyMainWindowType);
-
- return 1;
-}
diff --git a/objects/main-window-object.h b/objects/main-window-object.h
deleted file mode 100644
index fbbdac0..0000000
--- a/objects/main-window-object.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef _MAIN_WINDOW_OBJECT_H_
-#define _MAIN_WINDOW_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-#include "pyirssi.h"
-
-typedef struct
-{
- PyIrssiFinal_HEAD(void)
- PyObject *active;
-} PyMainWindow;
-
-extern PyTypeObject PyMainWindowType;
-
-int main_window_object_init(void);
-PyObject *pymain_window_new(MAIN_WINDOW_REC *mw);
-#define pymain_window_check(op) PyObject_TypeCheck(op, &PyMainWindowType)
-
-#endif
diff --git a/objects/netsplit-channel-object.c b/objects/netsplit-channel-object.c
deleted file mode 100644
index 3e2639b..0000000
--- a/objects/netsplit-channel-object.c
+++ /dev/null
@@ -1,170 +0,0 @@
-#include <Python.h>
-#include "pyirssi_irc.h"
-#include "pymodule.h"
-#include "netsplit-channel-object.h"
-#include "factory.h"
-#include "pycore.h"
-
-/* value copied -- no special cleanup */
-
-static void PyNetsplitChannel_dealloc(PyNetsplitChannel *self)
-{
- Py_XDECREF(self->name);
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-static PyObject *PyNetsplitChannel_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- PyNetsplitChannel *self;
-
- self = (PyNetsplitChannel *)type->tp_alloc(type, 0);
- if (!self)
- return NULL;
-
- return (PyObject *)self;
-}
-
-/* Getters */
-PyDoc_STRVAR(PyNetsplitChannel_name_doc,
- "Channel name"
-);
-static PyObject *PyNetsplitChannel_name_get(PyNetsplitChannel *self, void *closure)
-{
- RET_AS_OBJ_OR_NONE(self->name);
-}
-
-PyDoc_STRVAR(PyNetsplitChannel_op_doc,
- "is op"
-);
-static PyObject *PyNetsplitChannel_op_get(PyNetsplitChannel *self, void *closure)
-{
- return PyBool_FromLong(self->op);
-}
-
-PyDoc_STRVAR(PyNetsplitChannel_halfop_doc,
- "is halfop"
-);
-static PyObject *PyNetsplitChannel_halfop_get(PyNetsplitChannel *self, void *closure)
-{
- return PyBool_FromLong(self->halfop);
-}
-
-PyDoc_STRVAR(PyNetsplitChannel_voice_doc,
- "is voice"
-);
-static PyObject *PyNetsplitChannel_voice_get(PyNetsplitChannel *self, void *closure)
-{
- return PyBool_FromLong(self->voice);
-}
-
-PyDoc_STRVAR(PyNetsplitChannel_other_doc,
- "?"
-);
-static PyObject *PyNetsplitChannel_other_get(PyNetsplitChannel *self, void *closure)
-{
- return PyInt_FromLong(self->other);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyNetsplitChannel_getseters[] = {
- {"name", (getter)PyNetsplitChannel_name_get, NULL,
- PyNetsplitChannel_name_doc, NULL},
- {"op", (getter)PyNetsplitChannel_op_get, NULL,
- PyNetsplitChannel_op_doc, NULL},
- {"halfop", (getter)PyNetsplitChannel_halfop_get, NULL,
- PyNetsplitChannel_halfop_doc, NULL},
- {"voice", (getter)PyNetsplitChannel_voice_get, NULL,
- PyNetsplitChannel_voice_doc, NULL},
- {"other", (getter)PyNetsplitChannel_other_get, NULL,
- PyNetsplitChannel_other_doc, NULL},
- {NULL}
-};
-
-/* Methods */
-/* Methods for object */
-static PyMethodDef PyNetsplitChannel_methods[] = {
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyNetsplitChannelType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "NetsplitChannel", /*tp_name*/
- sizeof(PyNetsplitChannel), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyNetsplitChannel_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*/
- "PyNetsplitChannel objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyNetsplitChannel_methods, /* tp_methods */
- 0, /* tp_members */
- PyNetsplitChannel_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 */
- PyNetsplitChannel_new, /* tp_new */
-};
-
-
-/* window item wrapper factory function */
-PyObject *pynetsplit_channel_new(void *netsplit)
-{
- NETSPLIT_CHAN_REC *rec = netsplit;
- PyNetsplitChannel *pynetsplit;
- PyObject *name;
-
- name = PyString_FromString(rec->name);
- if (!name)
- return NULL;
-
- pynetsplit = py_inst(PyNetsplitChannel, PyNetsplitChannelType);
- if (!pynetsplit)
- {
- Py_DECREF(name);
- return NULL;
- }
-
- pynetsplit->name = name;
- pynetsplit->op = rec->op;
- pynetsplit->halfop = rec->halfop;
- pynetsplit->other = rec->other;
-
- return (PyObject *)pynetsplit;
-}
-
-int netsplit_channel_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyNetsplitChannelType) < 0)
- return 0;
-
- Py_INCREF(&PyNetsplitChannelType);
- PyModule_AddObject(py_module, "NetsplitChannel", (PyObject *)&PyNetsplitChannelType);
-
- return 1;
-}
diff --git a/objects/netsplit-channel-object.h b/objects/netsplit-channel-object.h
deleted file mode 100644
index 3a00fbb..0000000
--- a/objects/netsplit-channel-object.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef _NETSPLIT_CHANNEL_OBJECT_H_
-#define _NETSPLIT_CHANNEL_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-typedef struct
-{
- PyObject_HEAD
- PyObject *name;
- int op, halfop;
- int voice, other;
-} PyNetsplitChannel;
-
-extern PyTypeObject PyNetsplitChannelType;
-
-int netsplit_channel_object_init(void);
-PyObject *pynetsplit_channel_new(void *ns);
-#define pynetsplit_channel_check(op) PyObject_TypeCheck(op, &PyNetsplitChannelType)
-
-#endif
diff --git a/objects/netsplit-object.c b/objects/netsplit-object.c
deleted file mode 100644
index d64bd97..0000000
--- a/objects/netsplit-object.c
+++ /dev/null
@@ -1,184 +0,0 @@
-#include <Python.h>
-#include "pyirssi_irc.h"
-#include "pymodule.h"
-#include "netsplit-object.h"
-#include "factory.h"
-#include "pycore.h"
-
-#define NETSPLIT(ns) ((NETSPLIT_REC*)ns)
-
-/* monitor "netsplit remove" signal */
-static void netsplit_cleanup(NETSPLIT_REC *netsplit)
-{
- PyNetsplit *pynetsplit = signal_get_user_data();
-
- if (netsplit == pynetsplit->data)
- {
- pynetsplit->data = NULL;
- pynetsplit->cleanup_installed = 0;
- signal_remove_data("netsplit remove", netsplit_cleanup, pynetsplit);
- }
-}
-
-static void PyNetsplit_dealloc(PyNetsplit *self)
-{
- if (self->cleanup_installed)
- signal_remove_data("netsplit remove", netsplit_cleanup, self);
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-static PyObject *PyNetsplit_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- PyNetsplit *self;
-
- self = (PyNetsplit *)type->tp_alloc(type, 0);
- if (!self)
- return NULL;
-
- return (PyObject *)self;
-}
-
-/* Getters */
-PyDoc_STRVAR(PyNetsplit_nick_doc,
- "Nick"
-);
-static PyObject *PyNetsplit_nick_get(PyNetsplit *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(NETSPLIT(self->data)->nick);
-}
-
-PyDoc_STRVAR(PyNetsplit_address_doc,
- "Nick's host"
-);
-static PyObject *PyNetsplit_address_get(PyNetsplit *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(NETSPLIT(self->data)->address);
-}
-
-PyDoc_STRVAR(PyNetsplit_destroy_doc,
- "Timestamp when this record should be destroyed"
-);
-static PyObject *PyNetsplit_destroy_get(PyNetsplit *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyLong_FromUnsignedLong(NETSPLIT(self->data)->destroy);
-}
-
-PyDoc_STRVAR(PyNetsplit_server_doc,
- "Netsplitserver object"
-);
-static PyObject *PyNetsplit_server_get(PyNetsplit *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_OBJ_OR_NONE(self->server);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyNetsplit_getseters[] = {
- {"nick", (getter)PyNetsplit_nick_get, NULL,
- PyNetsplit_nick_doc, NULL},
- {"address", (getter)PyNetsplit_address_get, NULL,
- PyNetsplit_address_doc, NULL},
- {"destroy", (getter)PyNetsplit_destroy_get, NULL,
- PyNetsplit_destroy_doc, NULL},
- {"server", (getter)PyNetsplit_server_get, NULL,
- PyNetsplit_server_doc, NULL},
- {NULL}
-};
-
-/* Methods */
-PyDoc_STRVAR(PyNetsplit_channels_doc,
- "channels() -> list of NetsplitChannel objects\n"
- "\n"
- "Return list of NetsplitChannel objects\n"
-);
-static PyObject *PyNetsplit_channels(PyNetsplit *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
- return py_irssi_objlist_new(NETSPLIT(self->data)->channels, 1,
- (InitFunc)pynetsplit_channel_new);
-}
-
-/* Methods for object */
-static PyMethodDef PyNetsplit_methods[] = {
- {"channels", (PyCFunction)PyNetsplit_channels, METH_NOARGS,
- PyNetsplit_channels_doc},
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyNetsplitType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Netsplit", /*tp_name*/
- sizeof(PyNetsplit), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyNetsplit_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*/
- "PyNetsplit objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyNetsplit_methods, /* tp_methods */
- 0, /* tp_members */
- PyNetsplit_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 */
- PyNetsplit_new, /* tp_new */
-};
-
-
-/* window item wrapper factory function */
-PyObject *pynetsplit_new(void *netsplit)
-{
- PyNetsplit *pynetsplit;
-
- //FIXME: add netsplit server
-
- pynetsplit = py_inst(PyNetsplit, PyNetsplitType);
- if (!pynetsplit)
- return NULL;
-
- pynetsplit->data = netsplit;
- pynetsplit->cleanup_installed = 1;
- signal_add_last_data("netsplit remove", netsplit_cleanup, pynetsplit);
-
- return (PyObject *)pynetsplit;
-}
-
-int netsplit_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyNetsplitType) < 0)
- return 0;
-
- Py_INCREF(&PyNetsplitType);
- PyModule_AddObject(py_module, "Netsplit", (PyObject *)&PyNetsplitType);
-
- return 1;
-}
diff --git a/objects/netsplit-object.h b/objects/netsplit-object.h
deleted file mode 100644
index bd166e0..0000000
--- a/objects/netsplit-object.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef _NETSPLIT_OBJECT_H_
-#define _NETSPLIT_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-typedef struct
-{
- PyIrssiFinal_HEAD(void)
- PyObject *server;
-} PyNetsplit;
-
-extern PyTypeObject PyNetsplitType;
-
-int netsplit_object_init(void);
-PyObject *pynetsplit_new(void *ns);
-#define pynetsplit_check(op) PyObject_TypeCheck(op, &PyNetsplitType)
-
-#endif
diff --git a/objects/netsplit-server-object.c b/objects/netsplit-server-object.c
deleted file mode 100644
index 7208ae1..0000000
--- a/objects/netsplit-server-object.c
+++ /dev/null
@@ -1,157 +0,0 @@
-#include <Python.h>
-#include "pyirssi_irc.h"
-#include "pymodule.h"
-#include "netsplit-object.h"
-#include "factory.h"
-#include "pycore.h"
-
-#define NETSPLIT_SERVER(ns) ((NETSPLIT_SERVER_REC*)ns)
-
-/* monitor "netsplit remove" signal */
-static void netsplit_server_cleanup(NETSPLIT_SERVER_REC *netsplit)
-{
- PyNetsplitServer *pynetsplit = signal_get_user_data();
-
- if (netsplit == pynetsplit->data)
- {
- pynetsplit->data = NULL;
- pynetsplit->cleanup_installed = 0;
- signal_remove_data("netsplit remove", netsplit_server_cleanup, pynetsplit);
- }
-}
-
-static void PyNetsplitServer_dealloc(PyNetsplitServer *self)
-{
- if (self->cleanup_installed)
- signal_remove_data("netsplit remove", netsplit_server_cleanup, self);
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-static PyObject *PyNetsplitServer_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- PyNetsplitServer *self;
-
- self = (PyNetsplitServer *)type->tp_alloc(type, 0);
- if (!self)
- return NULL;
-
- return (PyObject *)self;
-}
-
-/* Getters */
-PyDoc_STRVAR(PyNetsplitServer_server_doc,
- "The server nick was in"
-);
-static PyObject *PyNetsplitServer_server_get(PyNetsplitServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(NETSPLIT_SERVER(self->data)->server);
-}
-
-PyDoc_STRVAR(PyNetsplitServer_destserver_doc,
- "The other server where split occured."
-);
-static PyObject *PyNetsplitServer_destserver_get(PyNetsplitServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(NETSPLIT_SERVER(self->data)->destserver);
-}
-
-PyDoc_STRVAR(PyNetsplitServer_count_doc,
- "Number of splits in server"
-);
-static PyObject *PyNetsplitServer_count_get(PyNetsplitServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(NETSPLIT_SERVER(self->data)->count);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyNetsplitServer_getseters[] = {
- {"server", (getter)PyNetsplitServer_server_get, NULL,
- PyNetsplitServer_server_doc, NULL},
- {"destserver", (getter)PyNetsplitServer_destserver_get, NULL,
- PyNetsplitServer_destserver_doc, NULL},
- {"count", (getter)PyNetsplitServer_count_get, NULL,
- PyNetsplitServer_count_doc, NULL},
- {NULL}
-};
-
-/* Methods */
-/* Methods for object */
-static PyMethodDef PyNetsplitServer_methods[] = {
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyNetsplitServerType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "NetsplitServer", /*tp_name*/
- sizeof(PyNetsplitServer), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyNetsplitServer_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*/
- "PyNetsplitServer objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyNetsplitServer_methods, /* tp_methods */
- 0, /* tp_members */
- PyNetsplitServer_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 */
- PyNetsplitServer_new, /* tp_new */
-};
-
-
-/* window item wrapper factory function */
-PyObject *pynetsplit_server_new(void *nss)
-{
- PyNetsplitServer *pynss;
-
- pynss = py_inst(PyNetsplitServer, PyNetsplitServerType);
- if (!pynss)
- return NULL;
-
- pynss->data = nss;
- pynss->cleanup_installed = 1;
- signal_add_last_data("netsplit server remove", netsplit_server_cleanup, pynss);
-
- return (PyObject *)pynss;
-}
-
-int netsplit_server_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyNetsplitServerType) < 0)
- return 0;
-
- Py_INCREF(&PyNetsplitServerType);
- PyModule_AddObject(py_module, "NetsplitServer", (PyObject *)&PyNetsplitServerType);
-
- return 1;
-}
diff --git a/objects/netsplit-server-object.h b/objects/netsplit-server-object.h
deleted file mode 100644
index f1d5fbf..0000000
--- a/objects/netsplit-server-object.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef _NETSPLIT_SERVER_OBJECT_H_
-#define _NETSPLIT_SERVER_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-typedef struct
-{
- PyIrssiFinal_HEAD(void)
-} PyNetsplitServer;
-
-extern PyTypeObject PyNetsplitServerType;
-
-int netsplit_server_object_init(void);
-PyObject *pynetsplit_server_new(void *nss);
-#define pynetsplit_server_check(op) PyObject_TypeCheck(op, &PyNetsplitServerType)
-
-#endif
diff --git a/objects/nick-object.c b/objects/nick-object.c
deleted file mode 100644
index 79f3a85..0000000
--- a/objects/nick-object.c
+++ /dev/null
@@ -1,237 +0,0 @@
-#include <Python.h>
-#include "pymodule.h"
-#include "base-objects.h"
-#include "nick-object.h"
-#include "pyirssi.h"
-#include "pycore.h"
-#include "pyutils.h"
-
-static void nick_cleanup(CHANNEL_REC *chan, NICK_REC *nick)
-{
- PyNick *pynick = signal_get_user_data();
-
- if (nick == pynick->data)
- {
- pynick->data = NULL;
- pynick->cleanup_installed = 0;
- signal_remove_data("nicklist remove", nick_cleanup, pynick);
- }
-}
-
-static void PyNick_dealloc(PyNick *self)
-{
- if (self->cleanup_installed)
- signal_remove_data("nicklist remove", nick_cleanup, self);
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-/* Getters */
-PyDoc_STRVAR(PyNick_send_massjoin_doc,
- "Waiting to be sent in a 'massjoin' signal, True or False"
-);
-static PyObject *PyNick_send_massjoin_get(PyNick *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->send_massjoin);
-}
-
-PyDoc_STRVAR(PyNick_nick_doc,
- "Plain nick"
-);
-static PyObject *PyNick_nick_get(PyNick *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->nick);
-}
-
-PyDoc_STRVAR(PyNick_host_doc,
- "Host address"
-);
-static PyObject *PyNick_host_get(PyNick *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->host);
-}
-
-PyDoc_STRVAR(PyNick_realname_doc,
- "Real name"
-);
-static PyObject *PyNick_realname_get(PyNick *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->realname);
-}
-
-PyDoc_STRVAR(PyNick_hops_doc,
- "Hop count to the server the nick is using"
-);
-static PyObject *PyNick_hops_get(PyNick *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->hops);
-}
-
-PyDoc_STRVAR(PyNick_gone_doc,
- "User status"
-);
-static PyObject *PyNick_gone_get(PyNick *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->gone);
-}
-
-PyDoc_STRVAR(PyNick_serverop_doc,
- "User status"
-);
-static PyObject *PyNick_serverop_get(PyNick *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->serverop);
-}
-
-PyDoc_STRVAR(PyNick_op_doc,
- "User status"
-);
-static PyObject *PyNick_op_get(PyNick *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->op);
-}
-
-PyDoc_STRVAR(PyNick_voice_doc,
- "User status"
-);
-static PyObject *PyNick_voice_get(PyNick *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->voice);
-}
-
-PyDoc_STRVAR(PyNick_halfop_doc,
- "User status"
-);
-static PyObject *PyNick_halfop_get(PyNick *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->halfop);
-}
-
-PyDoc_STRVAR(PyNick_last_check_doc,
- "timestamp when last checked gone/ircop status."
-);
-static PyObject *PyNick_last_check_get(PyNick *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyLong_FromUnsignedLong(self->data->last_check);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyNick_getseters[] = {
- {"send_massjoin", (getter)PyNick_send_massjoin_get, NULL,
- PyNick_send_massjoin_doc, NULL},
- {"nick", (getter)PyNick_nick_get, NULL,
- PyNick_nick_doc, NULL},
- {"host", (getter)PyNick_host_get, NULL,
- PyNick_host_doc, NULL},
- {"realname", (getter)PyNick_realname_get, NULL,
- PyNick_realname_doc, NULL},
- {"hops", (getter)PyNick_hops_get, NULL,
- PyNick_hops_doc, NULL},
- {"gone", (getter)PyNick_gone_get, NULL,
- PyNick_gone_doc, NULL},
- {"serverop", (getter)PyNick_serverop_get, NULL,
- PyNick_serverop_doc, NULL},
- {"op", (getter)PyNick_op_get, NULL,
- PyNick_op_doc, NULL},
- {"voice", (getter)PyNick_voice_get, NULL,
- PyNick_voice_doc, NULL},
- {"halfop", (getter)PyNick_halfop_get, NULL,
- PyNick_halfop_doc, NULL},
- {"last_check", (getter)PyNick_last_check_get, NULL,
- PyNick_last_check_doc, NULL},
- {NULL}
-};
-
-static PyMethodDef PyNick_methods[] = {
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyNickType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Nick", /*tp_name*/
- sizeof(PyNick), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyNick_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*/
- "PyNick objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyNick_methods, /* tp_methods */
- 0, /* tp_members */
- PyNick_getseters, /* tp_getset */
- &PyIrssiChatBaseType, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
-};
-
-
-/* nick factory function */
-PyObject *pynick_sub_new(void *nick, PyTypeObject *subclass)
-{
- static const char *name = "NICK";
- PyNick *pynick = NULL;
-
- pynick = py_instp(PyNick, subclass);
- if (!pynick)
- return NULL;
-
- pynick->data = nick;
- pynick->base_name = name;
- signal_add_last_data("nicklist remove", nick_cleanup, pynick);
- pynick->cleanup_installed = 1;
-
- return (PyObject *)pynick;
-}
-
-PyObject *pynick_new(void *nick)
-{
- return pynick_sub_new(nick, &PyNickType);
-}
-
-int nick_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyNickType) < 0)
- return 0;
-
- Py_INCREF(&PyNickType);
- PyModule_AddObject(py_module, "Nick", (PyObject *)&PyNickType);
-
- return 1;
-}
diff --git a/objects/nick-object.h b/objects/nick-object.h
deleted file mode 100644
index 6831994..0000000
--- a/objects/nick-object.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _NICK_OBJECT_H_
-#define _NICK_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-/* forward */
-struct _NICK_REC;
-
-typedef struct
-{
- PyIrssi_HEAD(struct _NICK_REC)
-} PyNick;
-
-extern PyTypeObject PyNickType;
-
-int nick_object_init(void);
-PyObject *pynick_sub_new(void *nick, PyTypeObject *subclass);
-PyObject *pynick_new(void *nick);
-#define pynick_check(op) PyObject_TypeCheck(op, &PyNickType)
-
-#endif
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;
-}
diff --git a/objects/notifylist-object.h b/objects/notifylist-object.h
deleted file mode 100644
index 9db6922..0000000
--- a/objects/notifylist-object.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef _NOTIFYLIST_OBJECT_H_
-#define _NOTIFYLIST_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-typedef struct
-{
- PyIrssiFinal_HEAD(void)
-} PyNotifylist;
-
-extern PyTypeObject PyNotifylistType;
-
-int notifylist_object_init(void);
-PyObject *pynotifylist_new(void *notifylist);
-#define pynotifylist_check(op) PyObject_TypeCheck(op, &PyNotifylistType)
-
-#endif
diff --git a/objects/process-object.c b/objects/process-object.c
deleted file mode 100644
index 43c0fd7..0000000
--- a/objects/process-object.c
+++ /dev/null
@@ -1,222 +0,0 @@
-#include <Python.h>
-#include "pyirssi_irc.h"
-#include "pymodule.h"
-#include "process-object.h"
-#include "pycore.h"
-
-/* monitor "exec remove" signal */
-static void process_cleanup(PROCESS_REC *process, int status)
-{
- PyProcess *pyprocess = signal_get_user_data();
-
- if (process == pyprocess->data)
- {
- pyprocess->data = NULL;
- pyprocess->cleanup_installed = 0;
- signal_remove_data("exec remove", process_cleanup, pyprocess);
- }
-}
-
-static void PyProcess_dealloc(PyProcess *self)
-{
- if (self->cleanup_installed)
- signal_remove_data("exec remove", process_cleanup, self);
-
- Py_XDECREF(self->target_win);
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-static PyObject *PyProcess_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- PyProcess *self;
-
- self = (PyProcess *)type->tp_alloc(type, 0);
- if (!self)
- return NULL;
-
- return (PyObject *)self;
-}
-
-/* Getters */
-PyDoc_STRVAR(PyProcess_id_doc,
- "ID for the process"
-);
-static PyObject *PyProcess_id_get(PyProcess *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->id);
-}
-
-PyDoc_STRVAR(PyProcess_name_doc,
- "Name for the process (if given)"
-);
-static PyObject *PyProcess_name_get(PyProcess *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->name);
-}
-
-PyDoc_STRVAR(PyProcess_args_doc,
- "The command that is being executed"
-);
-static PyObject *PyProcess_args_get(PyProcess *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->args);
-}
-
-PyDoc_STRVAR(PyProcess_pid_doc,
- "PID for the executed command"
-);
-static PyObject *PyProcess_pid_get(PyProcess *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->pid);
-}
-
-PyDoc_STRVAR(PyProcess_target_doc,
- "send text with /msg <target> ..."
-);
-static PyObject *PyProcess_target_get(PyProcess *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->target);
-}
-
-PyDoc_STRVAR(PyProcess_target_win_doc,
- "print text to this window"
-);
-static PyObject *PyProcess_target_win_get(PyProcess *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_OBJ_OR_NONE(self->target_win);
-}
-
-PyDoc_STRVAR(PyProcess_shell_doc,
- "start the program via /bin/sh"
-);
-static PyObject *PyProcess_shell_get(PyProcess *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->shell);
-}
-
-PyDoc_STRVAR(PyProcess_notice_doc,
- "send text with /notice, not /msg if target is set"
-);
-static PyObject *PyProcess_notice_get(PyProcess *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->notice);
-}
-
-PyDoc_STRVAR(PyProcess_silent_doc,
- "don't print \"process exited with level xx\""
-);
-static PyObject *PyProcess_silent_get(PyProcess *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->silent);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyProcess_getseters[] = {
- {"id", (getter)PyProcess_id_get, NULL,
- PyProcess_id_doc, NULL},
- {"name", (getter)PyProcess_name_get, NULL,
- PyProcess_name_doc, NULL},
- {"args", (getter)PyProcess_args_get, NULL,
- PyProcess_args_doc, NULL},
- {"pid", (getter)PyProcess_pid_get, NULL,
- PyProcess_pid_doc, NULL},
- {"target", (getter)PyProcess_target_get, NULL,
- PyProcess_target_doc, NULL},
- {"target_win", (getter)PyProcess_target_win_get, NULL,
- PyProcess_target_win_doc, NULL},
- {"shell", (getter)PyProcess_shell_get, NULL,
- PyProcess_shell_doc, NULL},
- {"notice", (getter)PyProcess_notice_get, NULL,
- PyProcess_notice_doc, NULL},
- {"silent", (getter)PyProcess_silent_get, NULL,
- PyProcess_silent_doc, NULL},
- {NULL}
-};
-
-/* Methods */
-/* Methods for object */
-static PyMethodDef PyProcess_methods[] = {
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyProcessType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Process", /*tp_name*/
- sizeof(PyProcess), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyProcess_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*/
- "PyProcess objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyProcess_methods, /* tp_methods */
- 0, /* tp_members */
- PyProcess_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 */
- PyProcess_new, /* tp_new */
-};
-
-
-/* process factory function */
-PyObject *pyprocess_new(void *process)
-{
- PyProcess *pyprocess;
-
- pyprocess = py_inst(PyProcess, PyProcessType);
- if (!pyprocess)
- return NULL;
-
- pyprocess->data = process;
- pyprocess->cleanup_installed = 1;
- signal_add_last_data("exec remove", process_cleanup, pyprocess);
-
- return (PyObject *)pyprocess;
-}
-
-int process_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyProcessType) < 0)
- return 0;
-
- Py_INCREF(&PyProcessType);
- PyModule_AddObject(py_module, "Process", (PyObject *)&PyProcessType);
-
- return 1;
-}
diff --git a/objects/process-object.h b/objects/process-object.h
deleted file mode 100644
index 041f187..0000000
--- a/objects/process-object.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _PROCESS_OBJECT_H_
-#define _PROCESS_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-/* forward */
-struct PROCESS_REC;
-
-typedef struct
-{
- PyIrssiFinal_HEAD(struct PROCESS_REC)
- PyObject *target_win;
-} PyProcess;
-
-extern PyTypeObject PyProcessType;
-
-int process_object_init(void);
-PyObject *pyprocess_new(void *process);
-#define pyprocess_check(op) PyObject_TypeCheck(op, &PyProcessType)
-
-#endif
diff --git a/objects/pyscript-object.c b/objects/pyscript-object.c
deleted file mode 100644
index ae4770e..0000000
--- a/objects/pyscript-object.c
+++ /dev/null
@@ -1,801 +0,0 @@
-#include <Python.h>
-#include <structmember.h>
-#include "pyscript-object.h"
-#include "pyirssi.h"
-#include "pysignals.h"
-#include "pymodule.h"
-#include "pysource.h"
-#include "pythemes.h"
-#include "pystatusbar.h"
-
-/* handle cycles...
- Can't think of any reason why the user would put script into one of the lists
- but who knows. Call GC after unloading module.
-*/
-static int PyScript_traverse(PyScript *self, visitproc visit, void *arg)
-{
- Py_VISIT(self->module);
- Py_VISIT(self->argv);
- Py_VISIT(self->modules);
-
- return 0;
-}
-
-static int PyScript_clear(PyScript *self)
-{
- Py_CLEAR(self->module);
- Py_CLEAR(self->argv);
- Py_CLEAR(self->modules);
-
- return 0;
-}
-
-static void PyScript_dealloc(PyScript* self)
-{
- PyScript_clear(self);
- pyscript_remove_signals((PyObject*)self);
- pyscript_remove_sources((PyObject*)self);
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-static PyObject *PyScript_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- PyScript *self;
- PyObject *argv = NULL, *modules = NULL;
-
- argv = PyList_New(0);
- if (!argv)
- goto error;
-
- modules = PyDict_New();
- if (!modules)
- goto error;
-
- self = (PyScript *)type->tp_alloc(type, 0);
- if (!self)
- goto error;
-
- self->argv = argv;
- self->modules = modules;
-
- return (PyObject *)self;
-
-error:
- Py_XDECREF(argv);
- Py_XDECREF(modules);
- return NULL;
-}
-
-PyDoc_STRVAR(PyScript_command_bind_doc,
- "command_bind(command, func, catetory=None, priority=SIGNAL_PRIORITY_DEFAULT) -> None\n"
- "\n"
- "Add handler for a command\n"
-);
-static PyObject *PyScript_command_bind(PyScript *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"cmd", "func", "category", "priority", NULL};
- char *cmd;
- PyObject *func;
- char *category = NULL;
- int priority = SIGNAL_PRIORITY_DEFAULT;
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "sO|zi", kwlist,
- &cmd, &func, &category, &priority))
- return NULL;
-
- if (!PyCallable_Check(func))
- return PyErr_Format(PyExc_TypeError, "func must be callable");
-
- if (!pysignals_command_bind_list(&self->signals, cmd, func, category, priority))
- return PyErr_Format(PyExc_RuntimeError, "unable to bind command");
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyScript_signal_add_doc,
- "signal_add(signal, func, priority=SIGNAL_PRIORITY_DEFAULT) -> None\n"
- "\n"
- "Add handler for signal"
-);
-static PyObject *PyScript_signal_add(PyScript *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"signal", "func", "priority", NULL};
- char *signal;
- PyObject *func;
- int priority = SIGNAL_PRIORITY_DEFAULT;
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "sO|i", kwlist,
- &signal, &func, &priority))
- return NULL;
-
- if (!PyCallable_Check(func))
- return PyErr_Format(PyExc_TypeError, "func must be callable");
-
- if (!pysignals_signal_add_list(&self->signals, signal, func, priority))
- return PyErr_Format(PyExc_KeyError, "unable to find signal, '%s'", signal);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyScript_signal_remove_doc,
- "signal_remove(signal, func=None) -> None\n"
- "\n"
- "Remove signal handler\n"
-);
-static PyObject *PyScript_signal_remove(PyScript *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"signal", "func", NULL};
- char *signal = "";
- PyObject *func = Py_None;
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|O", kwlist,
- &signal, &func))
- return NULL;
-
- if (!PyCallable_Check(func) && func != Py_None)
- return PyErr_Format(PyExc_TypeError, "func must be callable or None");
-
- if (func == Py_None)
- func = NULL;
-
- if (!pysignals_remove_search(&self->signals, signal, func, PSG_SIGNAL))
- return PyErr_Format(PyExc_KeyError, "can't find signal");
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyScript_command_unbind_doc,
- "command_unbind(command, func=None) -> None\n"
- "\n"
- "Remove command handler\n"
-);
-static PyObject *PyScript_command_unbind(PyScript *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"command", "func", NULL};
- char *command = "";
- PyObject *func = Py_None;
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|O", kwlist,
- &command, &func))
- return NULL;
-
- if (!PyCallable_Check(func) && func != Py_None)
- return PyErr_Format(PyExc_TypeError, "func must be callable or None");
-
- if (func == Py_None)
- func = NULL;
-
- if (!pysignals_remove_search(&self->signals, command, func, PSG_COMMAND))
- return PyErr_Format(PyExc_KeyError, "can't find command");
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyScript_signal_register_doc,
- "signal_register(signal, arglist) -> None\n"
- "\n"
- "Register a new dynamic signal for use with irssi_python\n"
- "arglist is a string of character codes representing the type of each argument\n"
- "of the signal handler function.\n"
- "\n"
- " Scalars\n"
- " s -> char *\n"
- " i -> int\n"
- "\n"
- " Chat objects\n"
- " c -> CHATNET_REC\n"
- " S -> SERVER_REC\n"
- " C -> CHANNEL_REC\n"
- " q -> QUERY_REC\n"
- " n -> NICK_REC\n"
- " W -> WI_ITEM_REC\n"
- "\n"
- " Irssi objects\n"
- " d -> DCC_REC\n"
- "\n"
- " Other objects\n"
- " r -> RECONNECT_REC\n"
- " o -> COMMAND_REC\n"
- " l -> LOG_REC\n"
- " a -> RAWLOG_REC\n"
- " g -> IGNORE_REC\n"
- " b -> BAN_REC\n"
- " N -> NETSPLIT_REC\n"
- " e -> NETSPLIT_SERVER_REC\n"
- " O -> NOTIFYLIST_REC\n"
- " p -> PROCESS_REC\n"
- " t -> TEXT_DEST_REC\n"
- " w -> WINDOW_REC\n"
-);
-static PyObject *PyScript_signal_register(PyScript *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"signal", "arglist", NULL};
- static const char *good_codes = "sicSCqnWdrolagbNeOptw";
- char *signal = "";
- char *arglist = "";
- int i;
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "ss", kwlist,
- &signal, &arglist))
- return NULL;
-
- for (i = 0; arglist[i]; i++)
- if (!strchr(good_codes, arglist[i]))
- return PyErr_Format(PyExc_TypeError, "invalid code, %c", arglist[i]);
-
- if (i >= SIGNAL_MAX_ARGUMENTS)
- return PyErr_Format(PyExc_TypeError,
- "arglist greater than SIGNAL_MAX_ARGUMENTS (%d)",
- SIGNAL_MAX_ARGUMENTS);
-
- if (!pysignals_register(signal, arglist))
- return PyErr_Format(PyExc_TypeError, "signal present with different args");
-
- self->registered_signals = g_slist_append(self->registered_signals,
- g_strdup(signal));
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyScript_signal_unregister_doc,
- "signal_unregister(signal) -> None\n"
- "\n"
- "Unregister dynamic signal\n"
-);
-static PyObject *PyScript_signal_unregister(PyScript *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"signal", NULL};
- char *signal = "";
- GSList *search;
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &signal))
- return NULL;
-
- search = g_slist_find_custom(self->registered_signals, signal, (GCompareFunc)strcmp);
- if (!search)
- return PyErr_Format(PyExc_KeyError, "script has not registered that signal");
-
- g_free(search->data);
- self->registered_signals = g_slist_delete_link(self->registered_signals, search);
-
- if (!pysignals_unregister(signal))
- return PyErr_Format(PyExc_SystemError,
- "script registered signal, but signal does not exist");
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyScript_timeout_add_doc,
- "timeout_add(msecs, func, data=None) -> int source tag\n"
- "\n"
- "Add a timeout handler called every 'msecs' milliseconds until func\n"
- "returns False or the source is removed with source_remove().\n"
- "\n"
- "func is called as func(data) or func(), depending on whether data\n"
- "is specified or not.\n"
-);
-static PyObject *PyScript_timeout_add(PyScript *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"msecs", "func", "data", NULL};
- int msecs = 0;
- PyObject *func = NULL;
- PyObject *data = NULL;
- int ret;
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "iO|O", kwlist,
- &msecs, &func, &data))
- return NULL;
-
- if (msecs < 10)
- return PyErr_Format(PyExc_ValueError, "msecs must be at least 10");
-
- if (!PyCallable_Check(func))
- return PyErr_Format(PyExc_TypeError, "func not callable");
-
- ret = pysource_timeout_add_list(&self->sources, msecs, func, data);
-
- return PyInt_FromLong(ret);
-}
-
-PyDoc_STRVAR(PyScript_io_add_watch_doc,
- "io_add_watch(fd, func, data=None, condition=IO_IN|IO_PRI) -> int source tag\n"
-);
-static PyObject *PyScript_io_add_watch(PyScript *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"fd", "func", "data", "condition", NULL};
- int fd = 0;
- PyObject *pyfd = NULL;
- PyObject *func = NULL;
- PyObject *data = NULL;
- int condition = G_IO_IN | G_IO_PRI;
- int ret;
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO|Oi", kwlist,
- &pyfd, &func, &data, &condition))
- return NULL;
-
- fd = PyObject_AsFileDescriptor(pyfd);
- if (fd < 0)
- return NULL;
-
- if (!PyCallable_Check(func))
- return PyErr_Format(PyExc_TypeError, "func not callable");
-
- ret = pysource_io_add_watch_list(&self->sources, fd, condition, func, data);
-
- return PyInt_FromLong(ret);
-}
-
-PyDoc_STRVAR(PyScript_source_remove_doc,
- "source_remove(tag) -> bool\n"
- "\n"
- "Remove IO or timeout source by tag. Return True if tag found and removed.\n"
-);
-static PyObject *PyScript_source_remove(PyScript *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"tag", NULL};
- int tag = 0;
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "i", kwlist,
- &tag))
- return NULL;
-
- /* the destroy notify func will remove the list link, but first
- check that the tag exists in this Script object */
- if (g_slist_find(self->sources, GINT_TO_POINTER(tag)))
- return PyBool_FromLong(g_source_remove(tag));
-
- Py_RETURN_FALSE;
-}
-
-static int py_settings_add(PyScript *self, const char *name)
-{
- GSList *node;
-
- node = gslist_find_icase_string(self->settings, name);
- if (node)
- return 0;
-
- self->settings = g_slist_append(self->settings, g_strdup(name));
-
- return 1;
-}
-
-static int py_settings_remove(PyScript *self, const char *name)
-{
- GSList *node;
-
- node = gslist_find_icase_string(self->settings, name);
- if (!node)
- return 0;
-
- settings_remove(node->data);
- g_free(node->data);
-
- self->settings = g_slist_delete_link(self->settings, node);
-
- return 1;
-}
-
-PyDoc_STRVAR(PyScript_settings_add_str_doc,
- "settings_add_str(section, key, def) -> None\n"
-);
-static PyObject *PyScript_settings_add_str(PyScript *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"section", "key", "def", NULL};
- char *section = "";
- char *key = "";
- char *def = "";
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "sss", kwlist,
- &section, &key, &def))
- return NULL;
-
- if (!py_settings_add(self, key))
- return PyErr_Format(PyExc_ValueError, "key, %s, already added by script", key);
-
- settings_add_str_module(MODULE_NAME"/scripts", section, key, def);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyScript_settings_add_int_doc,
- "settings_add_int(section, key, def) -> None\n"
-);
-static PyObject *PyScript_settings_add_int(PyScript *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"section", "key", "def", NULL};
- char *section = "";
- char *key = "";
- int def = 0;
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "ssi", kwlist,
- &section, &key, &def))
- return NULL;
-
- if (!py_settings_add(self, key))
- return PyErr_Format(PyExc_ValueError, "key, %s, already added by script", key);
-
- settings_add_int_module(MODULE_NAME"/scripts", section, key, def);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyScript_settings_add_bool_doc,
- "settings_add_bool(section, key, def) -> None\n"
-);
-static PyObject *PyScript_settings_add_bool(PyScript *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"section", "key", "def", NULL};
- char *section = "";
- char *key = "";
- int def = 0;
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "ssi", kwlist,
- &section, &key, &def))
- return NULL;
-
- if (!py_settings_add(self, key))
- return PyErr_Format(PyExc_ValueError, "key, %s, already added by script", key);
-
- settings_add_bool_module(MODULE_NAME"/scripts", section, key, def);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyScript_settings_add_time_doc,
- "settings_add_time(section, key, def) -> None\n"
-);
-static PyObject *PyScript_settings_add_time(PyScript *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"section", "key", "def", NULL};
- char *section = "";
- char *key = "";
- char *def = "";
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "sss", kwlist,
- &section, &key, &def))
- return NULL;
-
- if (!py_settings_add(self, key))
- return PyErr_Format(PyExc_ValueError, "key, %s, already added by script", key);
-
- settings_add_time_module(MODULE_NAME"/scripts", section, key, def);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyScript_settings_add_level_doc,
- "settings_add_level(section, key, def) -> None\n"
-);
-static PyObject *PyScript_settings_add_level(PyScript *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"section", "key", "def", NULL};
- char *section = "";
- char *key = "";
- char *def = "";
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "sss", kwlist,
- &section, &key, &def))
- return NULL;
-
- if (!py_settings_add(self, key))
- return PyErr_Format(PyExc_ValueError, "key, %s, already added by script", key);
-
- settings_add_level_module(MODULE_NAME"/scripts", section, key, def);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyScript_settings_add_size_doc,
- "settings_add_size(section, key, def) -> None\n"
-);
-static PyObject *PyScript_settings_add_size(PyScript *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"section", "key", "def", NULL};
- char *section = "";
- char *key = "";
- char *def = "";
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "sss", kwlist,
- &section, &key, &def))
- return NULL;
-
- if (!py_settings_add(self, key))
- return PyErr_Format(PyExc_ValueError, "key, %s, already added by script", key);
-
- settings_add_size_module(MODULE_NAME"/scripts", section, key, def);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyScript_settings_remove_doc,
- "settings_remove(key) -> bool\n"
-);
-static PyObject *PyScript_settings_remove(PyScript *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"key", NULL};
- char *key = "";
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &key))
- return NULL;
-
- return PyBool_FromLong(py_settings_remove(self, key));
-}
-
-PyDoc_STRVAR(PyScript_theme_register_doc,
- "theme_register(list) -> None\n"
-);
-static PyObject *PyScript_theme_register(PyScript *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"list", NULL};
- PyObject *list = NULL;
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", kwlist,
- &list))
- return NULL;
-
- if (!pythemes_register(pyscript_get_name(self), list))
- return NULL;
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyScript_statusbar_item_register_doc,
- "statusbar_item_register(name, value=None, func=None) -> None\n"
-);
-static PyObject *PyScript_statusbar_item_register(PyScript *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"name", "value", "func", NULL};
- char *name = "";
- char *value = NULL;
- PyObject *func = NULL;
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|zO", kwlist,
- &name, &value, &func))
- return NULL;
-
- pystatusbar_item_register((PyObject *)self, name, value, func);
-
- Py_RETURN_NONE;
-}
-
-/* Methods for object */
-static PyMethodDef PyScript_methods[] = {
- {"command_bind", (PyCFunction)PyScript_command_bind, METH_VARARGS | METH_KEYWORDS,
- PyScript_command_bind_doc},
- {"signal_add", (PyCFunction)PyScript_signal_add, METH_VARARGS | METH_KEYWORDS,
- PyScript_signal_add_doc},
- {"signal_remove", (PyCFunction)PyScript_signal_remove, METH_VARARGS | METH_KEYWORDS,
- PyScript_signal_remove_doc},
- {"command_unbind", (PyCFunction)PyScript_command_unbind, METH_VARARGS | METH_KEYWORDS,
- PyScript_command_unbind_doc},
- {"signal_register", (PyCFunction)PyScript_signal_register, METH_VARARGS | METH_KEYWORDS,
- PyScript_signal_register_doc},
- {"signal_unregister", (PyCFunction)PyScript_signal_unregister, METH_VARARGS | METH_KEYWORDS,
- PyScript_signal_unregister_doc},
- {"timeout_add", (PyCFunction)PyScript_timeout_add, METH_VARARGS | METH_KEYWORDS,
- PyScript_timeout_add_doc},
- {"io_add_watch", (PyCFunction)PyScript_io_add_watch, METH_VARARGS | METH_KEYWORDS,
- PyScript_io_add_watch_doc},
- {"source_remove", (PyCFunction)PyScript_source_remove, METH_VARARGS | METH_KEYWORDS,
- PyScript_source_remove_doc},
- {"settings_add_str", (PyCFunction)PyScript_settings_add_str, METH_VARARGS | METH_KEYWORDS,
- PyScript_settings_add_str_doc},
- {"settings_add_int", (PyCFunction)PyScript_settings_add_int, METH_VARARGS | METH_KEYWORDS,
- PyScript_settings_add_int_doc},
- {"settings_add_bool", (PyCFunction)PyScript_settings_add_bool, METH_VARARGS | METH_KEYWORDS,
- PyScript_settings_add_bool_doc},
- {"settings_add_time", (PyCFunction)PyScript_settings_add_time, METH_VARARGS | METH_KEYWORDS,
- PyScript_settings_add_time_doc},
- {"settings_add_level", (PyCFunction)PyScript_settings_add_level, METH_VARARGS | METH_KEYWORDS,
- PyScript_settings_add_level_doc},
- {"settings_add_size", (PyCFunction)PyScript_settings_add_size, METH_VARARGS | METH_KEYWORDS,
- PyScript_settings_add_size_doc},
- {"settings_remove", (PyCFunction)PyScript_settings_remove, METH_VARARGS | METH_KEYWORDS,
- PyScript_settings_remove_doc},
- {"theme_register", (PyCFunction)PyScript_theme_register, METH_VARARGS | METH_KEYWORDS,
- PyScript_theme_register_doc},
- {"statusbar_item_register", (PyCFunction)PyScript_statusbar_item_register, METH_VARARGS | METH_KEYWORDS,
- PyScript_statusbar_item_register_doc},
- {NULL} /* Sentinel */
-};
-
-static PyMemberDef PyScript_members[] = {
- {"argv", T_OBJECT, offsetof(PyScript, argv), 0, "Script arguments"},
- {"module", T_OBJECT_EX, offsetof(PyScript, module), RO, "Script module"},
- {"modules", T_OBJECT_EX, offsetof(PyScript, modules), 0, "Imported modules"},
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyScriptType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Script", /*tp_name*/
- sizeof(PyScript), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyScript_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_HAVE_GC, /*tp_flags*/
- "PyScript objects", /* tp_doc */
- (traverseproc)PyScript_traverse, /* tp_traverse */
- (inquiry)PyScript_clear, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyScript_methods, /* tp_methods */
- PyScript_members, /* tp_members */
- 0, /* 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 */
- PyScript_new, /* tp_new */
-};
-
-/* PyScript factory function */
-PyObject *pyscript_new(PyObject *module, char **argv)
-{
- PyObject *script;
-
- script = PyObject_CallFunction((PyObject*)&PyScriptType, "()");
-
- if (script)
- {
- PyScript *scr = (PyScript *)script;
-
- while (*argv)
- {
- if (**argv != '\0')
- {
- PyObject *str = PyString_FromString(*argv);
- if (!str)
- {
- /* The destructor should DECREF argv */
- Py_DECREF(script);
- return NULL;
- }
-
- PyList_Append(scr->argv, str);
- Py_DECREF(str);
- }
-
- *argv++;
- }
-
- Py_INCREF(module);
- scr->module = module;
- }
-
- return script;
-}
-
-void pyscript_remove_signals(PyObject *script)
-{
- GSList *node;
- PyScript *self;
-
- g_return_if_fail(pyscript_check(script));
-
- self = (PyScript *) script;
-
- /* remove bound signals */
- pysignals_remove_list(self->signals);
- g_slist_free(self->signals);
- self->signals = NULL;
-
- /* remove registered signals */
- for (node = self->registered_signals; node; node = node->next)
- {
- pysignals_unregister(node->data);
- g_free(node->data);
- }
-
- g_slist_free(self->registered_signals);
- self->registered_signals = NULL;
-}
-
-void pyscript_remove_sources(PyObject *script)
-{
- GSList *node;
- PyScript *self;
-
- g_return_if_fail(pyscript_check(script));
-
- self = (PyScript *) script;
-
- node = self->sources;
- while (node)
- {
- /* the notify func will destroy the link so save next */
- GSList *next = node->next;
- g_source_remove(GPOINTER_TO_INT(node->data));
- node = next;
- }
-
- g_return_if_fail(self->sources == NULL);
-}
-
-void pyscript_remove_settings(PyObject *script)
-{
- PyScript *self;
-
- g_return_if_fail(pyscript_check(script));
-
- self = (PyScript *) script;
-
- g_slist_foreach(self->settings, (GFunc)settings_remove, NULL);
- g_slist_foreach(self->settings, (GFunc)g_free, NULL);
- g_slist_free(self->settings);
-}
-
-void pyscript_remove_themes(PyObject *script)
-{
- PyScript *self;
-
- g_return_if_fail(pyscript_check(script));
-
- self = (PyScript *) script;
-
- pythemes_unregister(pyscript_get_name(script));
-}
-
-void pyscript_remove_statusbars(PyObject *script)
-{
- g_return_if_fail(pyscript_check(script));
-
- pystatusbar_cleanup_script(script);
-}
-
-void pyscript_clear_modules(PyObject *script)
-{
- PyScript *self;
-
- g_return_if_fail(pyscript_check(script));
-
- self = (PyScript *) script;
-
- PyDict_Clear(self->modules);
-}
-
-void pyscript_cleanup(PyObject *script)
-{
- pyscript_remove_signals(script);
- pyscript_remove_sources(script);
- pyscript_remove_settings(script);
- pyscript_remove_themes(script);
- pyscript_remove_statusbars(script);
- pyscript_clear_modules(script);
-}
-
-int pyscript_init(void)
-{
- if (PyType_Ready(&PyScriptType) < 0)
- return 0;
-
- Py_INCREF(&PyScriptType);
- PyModule_AddObject(py_module, "Script", (PyObject *)&PyScriptType);
-
- return 1;
-}
-
diff --git a/objects/pyscript-object.h b/objects/pyscript-object.h
deleted file mode 100644
index 624a578..0000000
--- a/objects/pyscript-object.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef _PYSCRIPT_OBJECT_H_
-#define _PYSCRIPT_OBJECT_H_
-#include <Python.h>
-#include <glib.h>
-
-typedef struct {
- PyObject_HEAD
- PyObject *module; /* module object */
- PyObject *argv; /* list of argument strings from the load command */
- PyObject *modules; /* dict of imported modules for script */
- GSList *signals; /* list of bound signals and commands */
- GSList *registered_signals; /* list of signal names registered */
- GSList *sources; /* list of io and timeout sources */
- GSList *settings; /* list of settings from settings_add_*() */
-} PyScript;
-
-extern PyTypeObject PyScriptType;
-
-int pyscript_init(void);
-PyObject *pyscript_new(PyObject *module, char **argv);
-void pyscript_remove_signals(PyObject *script);
-void pyscript_remove_sources(PyObject *script);
-void pyscript_remove_settings(PyObject *script);
-void pyscript_remove_themes(PyObject *script);
-void pyscript_remove_statusbars(PyObject *script);
-void pyscript_clear_modules(PyObject *script);
-void pyscript_cleanup(PyObject *script);
-#define pyscript_check(op) PyObject_TypeCheck(op, &PyScriptType)
-#define pyscript_get_name(scr) PyModule_GetName(((PyScript*)scr)->module)
-#define pyscript_get_filename(scr) PyModule_GetFilename(((PyScript*)scr)->module)
-#define pyscript_get_module(scr) (((PyScript*)scr)->module)
-
-#endif
diff --git a/objects/query-object.c b/objects/query-object.c
deleted file mode 100644
index 47badd5..0000000
--- a/objects/query-object.c
+++ /dev/null
@@ -1,172 +0,0 @@
-#include <Python.h>
-#include "pyirssi.h"
-#include "pymodule.h"
-#include "base-objects.h"
-#include "window-item-object.h"
-#include "query-object.h"
-#include "server-object.h"
-#include "pycore.h"
-
-/* monitor "query destroyed" signal */
-static void query_cleanup(QUERY_REC *query)
-{
- PyQuery *pyquery = signal_get_user_data();
-
- if (query == pyquery->data)
- {
- pyquery->data = NULL;
- pyquery->cleanup_installed = 0;
- signal_remove_data("query destroyed", query_cleanup, pyquery);
- }
-}
-
-static void PyQuery_dealloc(PyQuery *self)
-{
- if (self->cleanup_installed)
- signal_remove_data("query destroyed", query_cleanup, self);
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-/* Getters */
-PyDoc_STRVAR(PyQuery_address_doc,
- "Host address of the queries nick"
-);
-static PyObject *PyQuery_address_get(PyQuery *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->address);
-}
-
-PyDoc_STRVAR(PyQuery_server_tag_doc,
- "Server tag used for this nick (doesn't get erased if server gets disconnected)"
-);
-static PyObject *PyQuery_server_tag_get(PyQuery *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->server_tag);
-}
-
-PyDoc_STRVAR(PyQuery_unwanted_doc,
- "1 if the other side closed or some error occured (DCC chats)"
-);
-static PyObject *PyQuery_unwanted_get(PyQuery *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->unwanted);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyQuery_getseters[] = {
- {"address", (getter)PyQuery_address_get, NULL,
- PyQuery_address_doc, NULL},
- {"server_tag", (getter)PyQuery_server_tag_get, NULL,
- PyQuery_server_tag_doc, NULL},
- {"unwanted", (getter)PyQuery_unwanted_get, NULL,
- PyQuery_unwanted_doc, NULL},
- {NULL}
-};
-
-PyDoc_STRVAR(change_server_doc,
- "change_server(server) -> None\n"
- "\n"
- "Change the active server for the query.\n"
-);
-static PyObject *PyQuery_change_server(PyQuery *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"server", NULL};
- PyObject *server;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", kwlist, &server))
- return NULL;
-
- if (!pyserver_check(server))
- return PyErr_Format(PyExc_TypeError, "argument must be server object");
-
- query_change_server(self->data, ((PyServer*)server)->data);
-
- Py_RETURN_NONE;
-}
-
-/* Methods for object */
-static PyMethodDef PyQuery_methods[] = {
- {"change_server", (PyCFunction)PyQuery_change_server, METH_VARARGS | METH_KEYWORDS,
- change_server_doc},
-
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyQueryType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Query", /*tp_name*/
- sizeof(PyQuery), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyQuery_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*/
- "PyQuery objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyQuery_methods, /* tp_methods */
- 0, /* tp_members */
- PyQuery_getseters, /* tp_getset */
- &PyWindowItemType, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
-};
-
-
-/* query factory function */
-PyObject *pyquery_new(void *query)
-{
- static const char *BASE_NAME = "QUERY";
- PyObject *pyquery;
-
- pyquery = pywindow_item_sub_new(query, BASE_NAME, &PyQueryType);
- if (pyquery)
- {
- PyQuery *pyq = (PyQuery *)pyquery;
- signal_add_last_data("query destroyed", query_cleanup, pyq);
- pyq->cleanup_installed = 1;
- }
-
- return pyquery;
-}
-
-int query_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyQueryType) < 0)
- return 0;
-
- Py_INCREF(&PyQueryType);
- PyModule_AddObject(py_module, "Query", (PyObject *)&PyQueryType);
-
- return 1;
-}
diff --git a/objects/query-object.h b/objects/query-object.h
deleted file mode 100644
index 844ce55..0000000
--- a/objects/query-object.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef _QUERY_OBJECT_H_
-#define _QUERY_OBJECT_H_
-
-#include <Python.h>
-#include "window-item-object.h"
-
-/* forward */
-struct _QUERY_REC;
-
-typedef struct
-{
- PyWindowItem_HEAD(struct _QUERY_REC)
-} PyQuery;
-
-extern PyTypeObject PyQueryType;
-
-int query_object_init(void);
-PyObject *pyquery_new(void *query);
-#define pyquery_check(op) PyObject_TypeCheck(op, &PyQueryType)
-
-#endif
diff --git a/objects/rawlog-object.c b/objects/rawlog-object.c
deleted file mode 100644
index 340d60a..0000000
--- a/objects/rawlog-object.c
+++ /dev/null
@@ -1,323 +0,0 @@
-#include <Python.h>
-#include "pyirssi_irc.h"
-#include "pymodule.h"
-#include "rawlog-object.h"
-#include "pycore.h"
-
-/* monitor "????" signal */
-static void rawlog_cleanup(RAWLOG_REC *ban)
-{
- /* XXX */
-}
-
-static void PyRawlog_dealloc(PyRawlog *self)
-{
- self->ob_type->tp_free((PyObject*)self);
-}
-
-static PyObject *PyRawlog_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- PyRawlog *self;
-
- self = (PyRawlog *)type->tp_alloc(type, 0);
- if (!self)
- return NULL;
-
- return (PyObject *)self;
-}
-
-/* XXX: Need function to create the rawlog */
-
-/* Getters */
-PyDoc_STRVAR(PyRawlog_logging_doc,
- "The raw log is being written to file currently."
-);
-static PyObject *PyRawlog_logging_get(PyRawlog *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->logging);
-}
-
-PyDoc_STRVAR(PyRawlog_nlines_doc,
- "Number of lines in rawlog."
-);
-static PyObject *PyRawlog_nlines_get(PyRawlog *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->nlines);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyRawlog_getseters[] = {
- {"logging", (getter)PyRawlog_logging_get, NULL,
- PyRawlog_logging_doc, NULL},
- {"nlines", (getter)PyRawlog_nlines_get, NULL,
- PyRawlog_nlines_doc, NULL},
- {NULL}
-};
-
-/* Methods */
-PyDoc_STRVAR(PyRawlog_get_lines_doc,
- "get_lines() -> list of str\n"
- "\n"
- "Return a list of lines for rawlog.\n"
-);
-static PyObject *PyRawlog_get_lines(PyRawlog *self, PyObject *args)
-{
- PyObject *lines = NULL;
- GSList *node;
-
- RET_NULL_IF_INVALID(self->data);
-
- lines = PyList_New(0);
- if (!lines)
- return NULL;
-
- for (node = self->data->lines; node; node = node->next)
- {
- int ret;
- PyObject *line = PyString_FromString(node->data);
-
- if (!line)
- {
- Py_XDECREF(lines);
- return NULL;
- }
-
- ret = PyList_Append(lines, line);
- Py_DECREF(line);
- if (ret != 0)
- {
- Py_XDECREF(lines);
- return NULL;
- }
- }
-
- return lines;
-}
-
-PyDoc_STRVAR(PyRawlog_destroy_doc,
- "destroy() -> None\n"
- "\n"
- "Destroy rawlog\n"
-);
-static PyObject *PyRawlog_destroy(PyRawlog *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- rawlog_destroy(self->data);
-
- /*XXX: what about signal handler ? */
- self->data = NULL;
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyRawlog_input_doc,
- "input(str) -> None\n"
- "\n"
- "Send str to rawlog as input text.\n"
-);
-static PyObject *PyRawlog_input(PyRawlog *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"str", NULL};
- char *str = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &str))
- return NULL;
-
- rawlog_input(self->data, str);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyRawlog_output_doc,
- "output(str) -> None\n"
- "\n"
- "Send str to rawlog as output text.\n"
-);
-static PyObject *PyRawlog_output(PyRawlog *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"str", NULL};
- char *str = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &str))
- return NULL;
-
- rawlog_output(self->data, str);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyRawlog_redirect_doc,
- "redirect(str) -> None\n"
- "\n"
- "Send str to rawlog as redirection text."
-);
-static PyObject *PyRawlog_redirect(PyRawlog *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"str", NULL};
- char *str = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &str))
- return NULL;
-
- rawlog_redirect(self->data, str);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyRawlog_open_doc,
- "open(fname) -> None\n"
- "\n"
- "Start logging new messages in rawlog to specified file.\n"
-);
-static PyObject *PyRawlog_open(PyRawlog *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"fname", NULL};
- char *fname = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &fname))
- return NULL;
-
- rawlog_open(self->data, fname);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyRawlog_close_doc,
- "close() -> None\n"
- "\n"
- "Stop logging to file\n"
-);
-static PyObject *PyRawlog_close(PyRawlog *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- rawlog_close(self->data);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyRawlog_save_doc,
- "save(fname) -> None\n"
- "\n"
- "Save the current rawlog history to specified file.\n"
-);
-static PyObject *PyRawlog_save(PyRawlog *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"fname", NULL};
- char *fname = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &fname))
- return NULL;
-
- rawlog_save(self->data, fname);
-
- Py_RETURN_NONE;
-}
-/* Methods for object */
-static PyMethodDef PyRawlog_methods[] = {
- {"get_lines", (PyCFunction)PyRawlog_get_lines, METH_NOARGS,
- PyRawlog_get_lines_doc},
- {"destroy", (PyCFunction)PyRawlog_destroy, METH_NOARGS,
- PyRawlog_destroy_doc},
- {"input", (PyCFunction)PyRawlog_input, METH_VARARGS | METH_KEYWORDS,
- PyRawlog_input_doc},
- {"output", (PyCFunction)PyRawlog_output, METH_VARARGS | METH_KEYWORDS,
- PyRawlog_output_doc},
- {"redirect", (PyCFunction)PyRawlog_redirect, METH_VARARGS | METH_KEYWORDS,
- PyRawlog_redirect_doc},
- {"open", (PyCFunction)PyRawlog_open, METH_VARARGS | METH_KEYWORDS,
- PyRawlog_open_doc},
- {"close", (PyCFunction)PyRawlog_close, METH_NOARGS,
- PyRawlog_close_doc},
- {"save", (PyCFunction)PyRawlog_save, METH_VARARGS | METH_KEYWORDS,
- PyRawlog_save_doc},
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyRawlogType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Rawlog", /*tp_name*/
- sizeof(PyRawlog), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyRawlog_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*/
- "PyRawlog objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyRawlog_methods, /* tp_methods */
- 0, /* tp_members */
- PyRawlog_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 */
- PyRawlog_new, /* tp_new */
-};
-
-
-/* window item wrapper factory function */
-PyObject *pyrawlog_new(void *rlog)
-{
- PyRawlog *pyrlog;
-
- pyrlog = py_inst(PyRawlog, PyRawlogType);
- if (!pyrlog)
- return NULL;
-
- pyrlog->data = rlog;
-
- return (PyObject *)pyrlog;
-}
-
-int rawlog_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyRawlogType) < 0)
- return 0;
-
- Py_INCREF(&PyRawlogType);
- PyModule_AddObject(py_module, "Rawlog", (PyObject *)&PyRawlogType);
-
- return 1;
-}
diff --git a/objects/rawlog-object.h b/objects/rawlog-object.h
deleted file mode 100644
index d2a9a2d..0000000
--- a/objects/rawlog-object.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _RAWLOG_OBJECT_H_
-#define _RAWLOG_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-/* forward */
-struct _RAWLOG_REC;
-
-typedef struct
-{
- PyIrssiFinal_HEAD(struct _RAWLOG_REC)
- int owned;
-} PyRawlog;
-
-extern PyTypeObject PyRawlogType;
-
-int rawlog_object_init(void);
-PyObject *pyrawlog_new(void *rlog);
-#define pyrawlog_check(op) PyObject_TypeCheck(op, &PyRawlogType)
-
-#endif
diff --git a/objects/reconnect-object.c b/objects/reconnect-object.c
deleted file mode 100644
index 6483242..0000000
--- a/objects/reconnect-object.c
+++ /dev/null
@@ -1,151 +0,0 @@
-#include <Python.h>
-#include "pyirssi.h"
-#include "pymodule.h"
-#include "pycore.h"
-#include "factory.h"
-#include "reconnect-object.h"
-
-/*XXX: no Reconnect cleanup/destroy sig. Maybe value copy the two members? */
-
-static void PyReconnect_dealloc(PyReconnect *self)
-{
- Py_XDECREF(self->connect);
- self->ob_type->tp_free((PyObject*)self);
-}
-
-static PyObject *PyReconnect_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- PyReconnect *self;
-
- self = (PyReconnect *)type->tp_alloc(type, 0);
- if (!self)
- return NULL;
-
- return (PyObject *)self;
-}
-
-/* Getters */
-PyDoc_STRVAR(PyReconnect_tag_doc,
- "Unique numeric tag"
-);
-static PyObject *PyReconnect_tag_get(PyReconnect *self, void *closure)
-{
- RECONNECT_REC *data = self->data;
- RET_NULL_IF_INVALID(self->data);
-
- return PyInt_FromLong(data->tag);
-}
-
-PyDoc_STRVAR(PyReconnect_next_connect_doc,
- "Unix time stamp when the next connection occurs"
-);
-static PyObject *PyReconnect_next_connect_get(PyReconnect *self, void *closure)
-{
- RECONNECT_REC *data = self->data;
- RET_NULL_IF_INVALID(self->data);
-
- return PyLong_FromUnsignedLong(data->next_connect);
-}
-
-PyDoc_STRVAR(PyReconnect_connect_doc,
- "Connection object"
-);
-static PyObject *PyReconnect_connect_get(PyReconnect *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_OBJ_OR_NONE(self->connect);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyReconnect_getseters[] = {
- {"tag", (getter)PyReconnect_tag_get, NULL,
- PyReconnect_tag_doc, NULL},
- {"next_connect", (getter)PyReconnect_next_connect_get, NULL,
- PyReconnect_next_connect_doc, NULL},
- {"connect", (getter)PyReconnect_connect_get, NULL,
- PyReconnect_connect_doc, NULL},
- {NULL}
-};
-
-/* Methods for object */
-static PyMethodDef PyReconnect_methods[] = {
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyReconnectType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Reconnect", /*tp_name*/
- sizeof(PyReconnect), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyReconnect_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*/
- "PyReconnect objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyReconnect_methods, /* tp_methods */
- 0, /* tp_members */
- PyReconnect_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 */
- PyReconnect_new, /* tp_new */
-};
-
-
-/* window item wrapper factory function */
-PyObject *pyreconnect_new(void *recon)
-{
- RECONNECT_REC *rec = recon;
- PyObject *connect;
- PyReconnect *pyrecon;
-
- /* XXX: get a managed connect because there's no signals to manage reconnect */
- connect = py_irssi_chat_new(rec->conn, 1);
- if (!connect)
- return NULL;
-
- pyrecon = py_inst(PyReconnect, PyReconnectType);
- if (!pyrecon)
- return NULL;
-
- pyrecon->data = recon;
- pyrecon->connect = connect;
-
- return (PyObject *)pyrecon;
-}
-
-int reconnect_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyReconnectType) < 0)
- return 0;
-
- Py_INCREF(&PyReconnectType);
- PyModule_AddObject(py_module, "Reconnect", (PyObject *)&PyReconnectType);
-
- return 1;
-}
diff --git a/objects/reconnect-object.h b/objects/reconnect-object.h
deleted file mode 100644
index ec0b094..0000000
--- a/objects/reconnect-object.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef _RECONNECT_OBJECT_H_
-#define _RECONNECT_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-/*XXX: no Reconnect cleanup/destroy sig. Maybe value copy the two members? */
-typedef struct
-{
- PyIrssiFinal_HEAD(void)
- PyObject *connect;
-} PyReconnect;
-
-extern PyTypeObject PyReconnectType;
-
-int reconnect_object_init(void);
-PyObject *pyreconnect_new(void *recon);
-#define pyreconnect_check(op) PyObject_TypeCheck(op, &PyReconnectType)
-
-#endif
diff --git a/objects/server-object.c b/objects/server-object.c
deleted file mode 100644
index 31415b8..0000000
--- a/objects/server-object.c
+++ /dev/null
@@ -1,807 +0,0 @@
-#include <Python.h>
-#include "pymodule.h"
-#include "factory.h"
-#include "pyirssi.h"
-#include "pycore.h"
-#include "pyutils.h"
-
-static void server_cleanup(SERVER_REC *server)
-{
- PyServer *pyserver = signal_get_user_data();
-
- if (server == pyserver->data)
- {
- if (pyserver->connect)
- ((PyConnect *)pyserver->connect)->data = NULL;
-
- if (pyserver->rawlog)
- ((PyRawlog *)pyserver->rawlog)->data = NULL;
-
- pyserver->data = NULL;
- pyserver->cleanup_installed = 0;
- signal_remove_data("server disconnected", server_cleanup, pyserver);
- }
-}
-
-static void PyServer_dealloc(PyServer *self)
-{
- if (self->cleanup_installed)
- signal_remove_data("server disconnected", server_cleanup, self);
-
- Py_XDECREF(self->connect);
- Py_XDECREF(self->rawlog);
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-/* Getters */
-PyDoc_STRVAR(PyServer_connect_time_doc,
- "Time when connect() to server finished"
-);
-static PyObject *PyServer_connect_time_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyLong_FromLong(self->data->connect_time);
-}
-
-PyDoc_STRVAR(PyServer_real_connect_time_doc,
- "Time when server sent 'connected' message"
-);
-static PyObject *PyServer_real_connect_time_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyLong_FromLong(self->data->real_connect_time);
-}
-
-PyDoc_STRVAR(PyServer_tag_doc,
- "Unique server tag"
-);
-static PyObject *PyServer_tag_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->tag);
-}
-
-PyDoc_STRVAR(PyServer_nick_doc,
- "Current nick"
-);
-static PyObject *PyServer_nick_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->nick);
-}
-
-PyDoc_STRVAR(PyServer_connected_doc,
- "Is connection finished? 1|0"
-);
-static PyObject *PyServer_connected_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->connected);
-}
-
-PyDoc_STRVAR(PyServer_connection_lost_doc,
- "Did we lose the connection (1) or was the connection just /DISCONNECTed (0)"
-);
-static PyObject *PyServer_connection_lost_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->connection_lost);
-}
-
-PyDoc_STRVAR(PyServer_rawlog_doc,
- "Rawlog object for the server"
-);
-static PyObject *PyServer_rawlog_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_OBJ_OR_NONE(self->rawlog);
-}
-
-PyDoc_STRVAR(PyServer_connect_doc,
- "Connect object for the server"
-);
-static PyObject *PyServer_connect_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_OBJ_OR_NONE(self->connect);
-}
-
-PyDoc_STRVAR(PyServer_version_doc,
- "Server version"
-);
-static PyObject *PyServer_version_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->version);
-}
-
-PyDoc_STRVAR(PyServer_last_invite_doc,
- "Last channel we were invited to"
-);
-static PyObject *PyServer_last_invite_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->last_invite);
-}
-
-PyDoc_STRVAR(PyServer_server_operator_doc,
- "Are we server operator (IRC op) 1|0"
-);
-static PyObject *PyServer_server_operator_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->server_operator);
-}
-
-PyDoc_STRVAR(PyServer_usermode_away_doc,
- "Are we marked as away? 1|0"
-);
-static PyObject *PyServer_usermode_away_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->usermode_away);
-}
-
-PyDoc_STRVAR(PyServer_away_reason_doc,
- "Away reason message"
-);
-static PyObject *PyServer_away_reason_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->away_reason);
-}
-
-PyDoc_STRVAR(PyServer_banned_doc,
- "Were we banned from this server? 1|0"
-);
-static PyObject *PyServer_banned_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->banned);
-}
-
-PyDoc_STRVAR(PyServer_lag_doc,
- "Current lag to server in milliseconds"
-);
-static PyObject *PyServer_lag_get(PyServer *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->lag);
-}
-
-static PyGetSetDef PyServer_getseters[] = {
- {"connect_time", (getter)PyServer_connect_time_get, NULL,
- PyServer_connect_time_doc, NULL},
- {"real_connect_time", (getter)PyServer_real_connect_time_get, NULL,
- PyServer_real_connect_time_doc, NULL},
- {"tag", (getter)PyServer_tag_get, NULL,
- PyServer_tag_doc, NULL},
- {"nick", (getter)PyServer_nick_get, NULL,
- PyServer_nick_doc, NULL},
- {"connected", (getter)PyServer_connected_get, NULL,
- PyServer_connected_doc, NULL},
- {"connection_lost", (getter)PyServer_connection_lost_get, NULL,
- PyServer_connection_lost_doc, NULL},
- {"rawlog", (getter)PyServer_rawlog_get, NULL,
- PyServer_rawlog_doc, NULL},
- {"connect", (getter)PyServer_connect_get, NULL,
- PyServer_connect_doc, NULL},
- {"version", (getter)PyServer_version_get, NULL,
- PyServer_version_doc, NULL},
- {"last_invite", (getter)PyServer_last_invite_get, NULL,
- PyServer_last_invite_doc, NULL},
- {"server_operator", (getter)PyServer_server_operator_get, NULL,
- PyServer_server_operator_doc, NULL},
- {"usermode_away", (getter)PyServer_usermode_away_get, NULL,
- PyServer_usermode_away_doc, NULL},
- {"away_reason", (getter)PyServer_away_reason_get, NULL,
- PyServer_away_reason_doc, NULL},
- {"banned", (getter)PyServer_banned_get, NULL,
- PyServer_banned_doc, NULL},
- {"lag", (getter)PyServer_lag_get, NULL,
- PyServer_lag_doc, NULL},
- {NULL}
-};
-
-/* Methods */
-PyDoc_STRVAR(print_doc,
- "prnt(channel, str, level) -> None\n"
- "\n"
- "Print to server\n"
-);
-static PyObject *PyServer_prnt(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"channel", "str", "level", NULL};
- char *str, *channel;
- int level = MSGLEVEL_CLIENTNOTICE;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "ss|i", kwlist, &channel, &str, &level))
- return NULL;
-
- printtext_string(self->data, channel, level, str);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(command_doc,
- "command(cmd) -> None\n"
- "\n"
- "Send command\n"
-);
-static PyObject *PyServer_command(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"cmd", NULL};
- char *cmd;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, &cmd))
- return NULL;
-
- py_command(cmd, self->data, NULL);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(disconnect_doc,
- "disconnect() -> None\n"
- "\n"
- "Disconnect from server\n"
-);
-static PyObject *PyServer_disconnect(PyServer *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- server_disconnect(self->data);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(isnickflag_doc,
- "isnickflag(flag) -> bool\n"
- "\n"
- "Returns True if flag is a nick mode flag (@, + or % in IRC)\n"
-);
-static PyObject *PyServer_isnickflag(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"flag", NULL};
- char flag;
- int ret;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "c", kwlist, &flag))
- return NULL;
-
- ret = self->data->isnickflag(self->data, flag);
-
- return PyBool_FromLong(ret);
-}
-
-PyDoc_STRVAR(ischannel_doc,
- "ischannel(data) -> bool\n"
- "\n"
- "Returns True if start of `data' seems to mean channel.\n"
-);
-static PyObject *PyServer_ischannel(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"data", NULL};
- char *data;
- int ret;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, &data))
- return NULL;
-
- ret = self->data->ischannel(self->data, data);
-
- return PyBool_FromLong(ret);
-}
-
-PyDoc_STRVAR(get_nick_flags_doc,
- "get_nick_flags() -> str\n"
- "\n"
- "Returns nick flag characters in order: op, voice, halfop (\"@+%\") in IRC\n"
-);
-static PyObject *PyServer_get_nick_flags(PyServer *self, PyObject *args)
-{
- char *ret;
-
- RET_NULL_IF_INVALID(self->data);
-
- ret = (char *)self->data->get_nick_flags(self->data);
-
- return PyString_FromString(ret);
-}
-
-PyDoc_STRVAR(send_message_doc,
- "send_message(target, msg, target_type) -> None\n"
- "\n"
- "Sends a message to nick/channel. target_type 0 = channel, 1 = nick\n"
-);
-static PyObject *PyServer_send_message(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"target", "msg", "target_type", NULL};
- char *target, *msg;
- int target_type;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "ssi", kwlist, &target, &msg, &target_type))
- return NULL;
-
- self->data->send_message(self->data, target, msg, target_type);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(channels_join_doc,
- "channels_join(channels, automatic=False) -> None\n"
- "\n"
- "Join to channels in server. `channels' may also contain keys for\n"
- "channels just like with /JOIN command. `automatic' specifies if this\n"
- "channel was joined 'automatically' or if it was joined because join\n"
- "was requested by user. If channel join is 'automatic', irssi doesn't\n"
- "jump to the window where the channel was joined.\n"
-);
-static PyObject *PyServer_channels_join(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"channels", "automatic", NULL};
- char *channels;
- int automatic = 0;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|i", kwlist, &channels, &automatic))
- return NULL;
-
- self->data->channels_join(self->data, channels, automatic);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyServer_window_item_find_doc,
- "window_item_find(name) -> WindowItem object or None\n"
- "\n"
- "Find window item that matches best to given arguments\n"
-);
-static PyObject *PyServer_window_item_find(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"name", NULL};
- char *name = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &name))
- return NULL;
-
- return py_irssi_chat_new(window_item_find(self->data, name), 1);
-}
-
-PyDoc_STRVAR(PyServer_window_find_item_doc,
- "window_find_item(name) -> Window object or None\n"
- "\n"
- "Find window which contains window item with specified name/server\n"
-);
-static PyObject *PyServer_window_find_item(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"name", NULL};
- char *name = "";
- WINDOW_REC *win;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &name))
- return NULL;
-
- win = window_find_item(self->data, name);
- if (win)
- return pywindow_new(win);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyServer_window_find_level_doc,
- "window_find_level(level) -> Window object or None\n"
- "\n"
- "Find window with level\n"
-);
-static PyObject *PyServer_window_find_level(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"level", NULL};
- int level = 0;
- WINDOW_REC *win;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "i", kwlist,
- &level))
- return NULL;
-
- win = window_find_level(self->data, level);
- if (win)
- return pywindow_new(win);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyServer_window_find_closest_doc,
- "window_find_closest(name, level) -> Window object or None\n"
- "\n"
- "Find window that matches best to given arguments. `name' can be either\n"
- "window name or name of one of the window items.\n"
-);
-static PyObject *PyServer_window_find_closest(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"name", "level", NULL};
- char *name = "";
- int level = 0;
- WINDOW_REC *win;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "si", kwlist,
- &name, &level))
- return NULL;
-
- win = window_find_closest(self->data, name, level);
- if (win)
- return pywindow_new(win);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyServer_channels_doc,
- "channels() -> list of Channel objects\n"
- "\n"
- "Return list of channels for server\n"
-);
-static PyObject *PyServer_channels(PyServer *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- return py_irssi_chatlist_new(self->data->channels, 1);
-}
-
-PyDoc_STRVAR(PyServer_channel_find_doc,
- "channel_find(name) -> Channel object or None\n"
- "\n"
- "Find channel from this server\n"
-);
-static PyObject *PyServer_channel_find(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"name", NULL};
- char *name = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &name))
- return NULL;
-
- return py_irssi_chat_new(channel_find(self->data, name), 1);
-}
-
-PyDoc_STRVAR(PyServer_nicks_get_same_doc,
- "nicks_get_same(nick)\n"
- "\n"
- "Return all nick objects in all channels in server. List is in format:\n"
- "[(Channel, Nick), (Channel, Nick), ...]\n"
-);
-static PyObject *PyServer_nicks_get_same(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"nick", NULL};
- char *nick = "";
- GSList *list, *node;
- PyObject *pylist = NULL;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &nick))
- return NULL;
-
- pylist = PyList_New(0);
- if (!pylist)
- return NULL;
-
- list = nicklist_get_same(self->data, nick);
- for (node = list; node != NULL; node = node->next->next)
- {
- int ret;
- PyObject *tup;
-
- tup = Py_BuildValue("(NN)",
- py_irssi_chat_new(node->data, 1),
- py_irssi_chat_new(node->next->data, 1));
- if (!tup)
- {
- Py_XDECREF(pylist);
- return NULL;
- }
-
- ret = PyList_Append(pylist, tup);
- Py_DECREF(tup);
- if (ret != 0)
- {
- Py_XDECREF(pylist);
- return NULL;
- }
- }
-
- return pylist;
-}
-
-PyDoc_STRVAR(PyServer_queries_doc,
- "queries() -> list of Query objects\n"
- "\n"
- "Return a list of queries for server.\n"
-);
-static PyObject *PyServer_queries(PyServer *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- return py_irssi_chatlist_new(self->data->queries, 1);
-}
-
-PyDoc_STRVAR(PyServer_query_find_doc,
- "query_find(nick) -> Query object or None\n"
- "\n"
- "Find a query on this server.\n"
-);
-static PyObject *PyServer_query_find(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"nick", NULL};
- char *nick = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &nick))
- return NULL;
-
- return py_irssi_chat_new(query_find(self->data, nick), 1);
-}
-
-PyDoc_STRVAR(PyServer_mask_match_doc,
- "mask_match(mask, nick, user, host) -> bool\n"
- "\n"
- "Return true if mask matches nick!user@host\n"
-);
-static PyObject *PyServer_mask_match(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"mask", "nick", "user", "host", NULL};
- char *mask = "";
- char *nick = "";
- char *user = "";
- char *host = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "ssss", kwlist,
- &mask, &nick, &user, &host))
- return NULL;
-
- return PyBool_FromLong(mask_match(self->data, mask, nick, user, host));
-}
-
-PyDoc_STRVAR(PyServer_mask_match_address_doc,
- "mask_match_address(mask, nick, address) -> bool\n"
- "\n"
- "Return True if mask matches nick!address\n"
-);
-static PyObject *PyServer_mask_match_address(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"mask", "nick", "address", NULL};
- char *mask = "";
- char *nick = "";
- char *address = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "sss", kwlist,
- &mask, &nick, &address))
- return NULL;
-
- return PyBool_FromLong(mask_match_address(self->data, mask, nick, address));
-}
-
-PyDoc_STRVAR(PyServer_masks_match_doc,
- "masks_match(masks, nick, address) -> bool\n"
- "\n"
- "Return True if any mask in the masks (string separated by spaces)\n"
- "matches nick!address\n"
-);
-static PyObject *PyServer_masks_match(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"masks", "nick", "address", NULL};
- char *masks = "";
- char *nick = "";
- char *address = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "sss", kwlist,
- &masks, &nick, &address))
- return NULL;
-
- return PyBool_FromLong(masks_match(self->data, masks, nick, address));
-}
-
-PyDoc_STRVAR(PyServer_ignore_check_doc,
- "ignore_check(nick, host, channel, text, level) -> bool\n"
- "\n"
- "Return True if ignore matches\n"
-);
-static PyObject *PyServer_ignore_check(PyServer *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"nick", "host", "channel", "text", "level", NULL};
- char *nick = "";
- char *host = "";
- char *channel = "";
- char *text = "";
- int level = 0;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "ssssi", kwlist,
- &nick, &host, &channel, &text, &level))
- return NULL;
-
- return PyBool_FromLong(ignore_check(self->data,
- nick, host, channel, text, level));
-}
-
-/* Methods for object */
-static PyMethodDef PyServer_methods[] = {
- {"prnt", (PyCFunction)PyServer_prnt, METH_VARARGS | METH_KEYWORDS,
- print_doc},
- {"command", (PyCFunction)PyServer_command, METH_VARARGS | METH_KEYWORDS,
- command_doc},
- {"disconnect", (PyCFunction)PyServer_disconnect, METH_NOARGS,
- disconnect_doc},
- {"isnickflag", (PyCFunction)PyServer_isnickflag, METH_VARARGS | METH_KEYWORDS,
- isnickflag_doc},
- {"ischannel", (PyCFunction)PyServer_ischannel, METH_VARARGS | METH_KEYWORDS,
- ischannel_doc},
- {"get_nick_flags", (PyCFunction)PyServer_get_nick_flags, METH_NOARGS,
- get_nick_flags_doc},
- {"send_message", (PyCFunction)PyServer_send_message, METH_VARARGS | METH_KEYWORDS,
- send_message_doc},
- {"channels_join", (PyCFunction)PyServer_channels_join, METH_VARARGS | METH_KEYWORDS,
- channels_join_doc},
- {"window_item_find", (PyCFunction)PyServer_window_item_find, METH_VARARGS | METH_KEYWORDS,
- PyServer_window_item_find_doc},
- {"window_find_item", (PyCFunction)PyServer_window_find_item, METH_VARARGS | METH_KEYWORDS,
- PyServer_window_find_item_doc},
- {"window_find_level", (PyCFunction)PyServer_window_find_level, METH_VARARGS | METH_KEYWORDS,
- PyServer_window_find_level_doc},
- {"window_find_closest", (PyCFunction)PyServer_window_find_closest, METH_VARARGS | METH_KEYWORDS,
- PyServer_window_find_closest_doc},
- {"channels", (PyCFunction)PyServer_channels, METH_NOARGS,
- PyServer_channels_doc},
- {"channel_find", (PyCFunction)PyServer_channel_find, METH_VARARGS | METH_KEYWORDS,
- PyServer_channel_find_doc},
- {"nicks_get_same", (PyCFunction)PyServer_nicks_get_same, METH_VARARGS | METH_KEYWORDS,
- PyServer_nicks_get_same_doc},
- {"queries", (PyCFunction)PyServer_queries, METH_NOARGS,
- PyServer_queries_doc},
- {"query_find", (PyCFunction)PyServer_query_find, METH_VARARGS | METH_KEYWORDS,
- PyServer_query_find_doc},
- {"mask_match", (PyCFunction)PyServer_mask_match, METH_VARARGS | METH_KEYWORDS,
- PyServer_mask_match_doc},
- {"mask_match_address", (PyCFunction)PyServer_mask_match_address, METH_VARARGS | METH_KEYWORDS,
- PyServer_mask_match_address_doc},
- {"masks_match", (PyCFunction)PyServer_masks_match, METH_VARARGS | METH_KEYWORDS,
- PyServer_masks_match_doc},
- {"ignore_check", (PyCFunction)PyServer_ignore_check, METH_VARARGS | METH_KEYWORDS,
- PyServer_ignore_check_doc},
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyServerType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Server", /*tp_name*/
- sizeof(PyServer), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyServer_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*/
- "PyServer objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyServer_methods, /* tp_methods */
- 0, /* tp_members */
- PyServer_getseters, /* tp_getset */
- &PyIrssiChatBaseType, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
-};
-
-
-/* server factory function
- connect arg should point to a wrapped SERVER_CONNECT */
-PyObject *pyserver_sub_new(void *server, PyTypeObject *subclass)
-{
- static const char *SERVER_TYPE = "SERVER";
- SERVER_REC *srec = server;
- PyServer *pyserver = NULL;
- PyObject *rawlog = NULL;
- PyObject *connect = NULL;
-
- g_return_val_if_fail(server != NULL, NULL);
-
- connect = py_irssi_chat_new(srec->connrec, 0);
- if (!connect)
- return NULL;
-
- /* FIXME */
- /*
- if (srec->rawlog)
- {
- rawlog = pyrawlog_new(srec->rawlog);
- if (!rawlog)
- return NULL;
- }
- */
-
- pyserver = py_instp(PyServer, subclass);
- if (!pyserver)
- return NULL;
-
- pyserver->base_name = SERVER_TYPE;
- pyserver->data = server;
- signal_add_last_data("server disconnected", server_cleanup, pyserver);
- pyserver->cleanup_installed = 1;
- pyserver->rawlog = rawlog;
- pyserver->connect = connect;
-
- return (PyObject *)pyserver;
-}
-
-PyObject *pyserver_new(void *server)
-{
- return pyserver_sub_new(server, &PyServerType);
-}
-
-int server_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyServerType) < 0)
- return 0;
-
- Py_INCREF(&PyServerType);
- PyModule_AddObject(py_module, "Server", (PyObject *)&PyServerType);
-
- return 1;
-}
diff --git a/objects/server-object.h b/objects/server-object.h
deleted file mode 100644
index 0703f47..0000000
--- a/objects/server-object.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef _SERVER_OBJECT_H_
-#define _SERVER_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-/* forward */
-struct _SERVER_REC;
-
-#define PyServer_HEAD(type) \
- PyIrssi_HEAD(type) \
- PyObject *connect; \
- PyObject *rawlog;
-
-typedef struct
-{
- PyServer_HEAD(struct _SERVER_REC)
-} PyServer;
-
-extern PyTypeObject PyServerType;
-
-int server_object_init(void);
-PyObject *pyserver_sub_new(void *server, PyTypeObject *subclass);
-PyObject *pyserver_new(void *server);
-
-#define pyserver_check(op) PyObject_TypeCheck(op, &PyServerType)
-
-#endif
diff --git a/objects/statusbar-item-object.c b/objects/statusbar-item-object.c
deleted file mode 100644
index f6768af..0000000
--- a/objects/statusbar-item-object.c
+++ /dev/null
@@ -1,253 +0,0 @@
-#include <Python.h>
-#include "pyirssi.h"
-#include "pymodule.h"
-#include "factory.h"
-#include "statusbar-item-object.h"
-
-/* monitor "statusbar item destroyed" signal */
-static void statusbar_item_cleanup(SBAR_ITEM_REC *sbar_item)
-{
- PyStatusbarItem *pysbar_item = signal_get_user_data();
-
- if (sbar_item == pysbar_item->data)
- {
- pysbar_item->data = NULL;
- pysbar_item->cleanup_installed = 0;
- signal_remove_data("statusbar item_destroy", statusbar_item_cleanup, pysbar_item);
- }
-}
-
-static void PyStatusbarItem_dealloc(PyStatusbarItem *self)
-{
- if (self->cleanup_installed)
- signal_remove_data("sbar_itemlist remove", statusbar_item_cleanup, self);
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-static PyObject *PyStatusbarItem_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- PyStatusbarItem *self;
-
- self = (PyStatusbarItem *)type->tp_alloc(type, 0);
- if (!self)
- return NULL;
-
- return (PyObject *)self;
-}
-
-/* Getter */
-PyDoc_STRVAR(PyStatusbarItem_min_size_doc,
- "min size"
-);
-static PyObject *PyStatusbarItem_min_size_get(PyStatusbarItem *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->min_size);
-}
-
-PyDoc_STRVAR(PyStatusbarItem_max_size_doc,
- "max size"
-);
-static PyObject *PyStatusbarItem_max_size_get(PyStatusbarItem *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->max_size);
-}
-
-PyDoc_STRVAR(PyStatusbarItem_xpos_doc,
- "x position"
-);
-static PyObject *PyStatusbarItem_xpos_get(PyStatusbarItem *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->xpos);
-}
-
-PyDoc_STRVAR(PyStatusbarItem_size_doc,
- "size"
-);
-static PyObject *PyStatusbarItem_size_get(PyStatusbarItem *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->size);
-}
-
-PyDoc_STRVAR(PyStatusbarItem_window_doc,
- "parent window for statusbar item"
-);
-static PyObject *PyStatusbarItem_window_get(PyStatusbarItem *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_OBJ_OR_NONE(self->window);
-}
-
-/* setters */
-static int py_setint(int *iv, PyObject *value)
-{
- int tmp;
-
- if (value == NULL)
- {
- PyErr_SetString(PyExc_AttributeError, "can't delete member");
- return -1;
- }
-
- if (!PyInt_Check(value))
- {
- PyErr_SetString(PyExc_TypeError, "value must be int");
- return -1;
- }
-
- tmp = PyInt_AsLong(value);
- if (PyErr_Occurred())
- return -1;
-
- *iv = tmp;
-
- return 0;
-}
-
-static int PyStatusbarItem_min_size_set(PyStatusbarItem *self, PyObject *value, void *closure)
-{
- return py_setint(&self->data->min_size, value);
-}
-
-static int PyStatusbarItem_max_size_set(PyStatusbarItem *self, PyObject *value, void *closure)
-{
- return py_setint(&self->data->max_size, value);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyStatusbarItem_getseters[] = {
- {"min_size", (getter)PyStatusbarItem_min_size_get, (setter)PyStatusbarItem_min_size_set,
- PyStatusbarItem_min_size_doc, NULL},
- {"max_size", (getter)PyStatusbarItem_max_size_get, (setter)PyStatusbarItem_max_size_set,
- PyStatusbarItem_max_size_doc, NULL},
- {"xpos", (getter)PyStatusbarItem_xpos_get, NULL,
- PyStatusbarItem_xpos_doc, NULL},
- {"size", (getter)PyStatusbarItem_size_get, NULL,
- PyStatusbarItem_size_doc, NULL},
- {"window", (getter)PyStatusbarItem_window_get, NULL,
- PyStatusbarItem_window_doc, NULL},
- {NULL}
-};
-
-/* Methods */
-PyDoc_STRVAR(PyStatusbarItem_default_handler_doc,
- "default_handler(get_size_only, str=None, data="", escape_vars=True) -> None\n"
- "\n"
- "Run default handler of item to print to statusbar\n"
-);
-static PyObject *PyStatusbarItem_default_handler(PyStatusbarItem *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"get_size_only", "str", "data", "escape_vars", NULL};
- int get_size_only = 0;
- char *str = NULL;
- char *data = "";
- int escape_vars = TRUE;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "i|zsi", kwlist,
- &get_size_only, &str, &data, &escape_vars))
- return NULL;
-
- if (str && !*str)
- str = NULL;
-
- statusbar_item_default_handler(self->data, get_size_only, str, data, escape_vars);
-
- Py_RETURN_NONE;
-}
-
-/* Methods for object */
-static PyMethodDef PyStatusbarItem_methods[] = {
- {"default_handler", (PyCFunction)PyStatusbarItem_default_handler, METH_VARARGS | METH_KEYWORDS,
- PyStatusbarItem_default_handler_doc},
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyStatusbarItemType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "StatusbarItem", /*tp_name*/
- sizeof(PyStatusbarItem), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyStatusbarItem_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*/
- "PyStatusbarItem objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyStatusbarItem_methods, /* tp_methods */
- 0, /* tp_members */
- PyStatusbarItem_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 */
- PyStatusbarItem_new, /* tp_new */
-};
-
-
-/* sbar_item factory function */
-PyObject *pystatusbar_item_new(void *sbar_item)
-{
- SBAR_ITEM_REC *si;
- PyStatusbarItem *pysbar_item;
- PyObject *window = NULL;
-
- si = sbar_item;
- if (si->bar->parent_window)
- {
- window = pywindow_new(si->bar->parent_window);
- if (!window)
- return NULL;
- }
-
- pysbar_item = py_inst(PyStatusbarItem, PyStatusbarItemType);
- if (!pysbar_item)
- return NULL;
-
- pysbar_item->window = window;
-
- pysbar_item->data = sbar_item;
- pysbar_item->cleanup_installed = 1;
- signal_add_last_data("statusbar item destroyed", statusbar_item_cleanup, pysbar_item);
-
- return (PyObject *)pysbar_item;
-}
-
-int statusbar_item_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyStatusbarItemType) < 0)
- return 0;
-
- Py_INCREF(&PyStatusbarItemType);
- PyModule_AddObject(py_module, "StatusbarItem", (PyObject *)&PyStatusbarItemType);
-
- return 1;
-}
diff --git a/objects/statusbar-item-object.h b/objects/statusbar-item-object.h
deleted file mode 100644
index 19243f4..0000000
--- a/objects/statusbar-item-object.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _SBAR_ITEM_OBJECT_H_
-#define _SBAR_ITEM_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-/* forward */
-struct SBAR_ITEM_REC;
-
-typedef struct
-{
- PyIrssiFinal_HEAD(struct SBAR_ITEM_REC)
- PyObject *window;
-} PyStatusbarItem;
-
-extern PyTypeObject PyStatusbarItemType;
-
-int statusbar_item_object_init(void);
-PyObject *pystatusbar_item_new(void *sbar_item);
-#define pystatusbar_item_check(op) PyObject_TypeCheck(op, &PyStatusbarItemType)
-
-#endif
diff --git a/objects/textdest-object.c b/objects/textdest-object.c
deleted file mode 100644
index 2ad6523..0000000
--- a/objects/textdest-object.c
+++ /dev/null
@@ -1,285 +0,0 @@
-#include <Python.h>
-#include "pyirssi_irc.h"
-#include "pymodule.h"
-#include "textdest-object.h"
-#include "factory.h"
-#include "pycore.h"
-
-static int pytextdest_setup(PyTextDest *pytdest, void *td, int owned);
-
-/* XXX: no cleanup signal for textdest */
-static void PyTextDest_dealloc(PyTextDest *self)
-{
- Py_XDECREF(self->window);
- Py_XDECREF(self->server);
-
- if (self->owned)
- {
- g_free((char*)self->data->target);
- g_free(self->data);
- }
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-static PyObject *PyTextDest_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- PyTextDest *self;
-
- self = (PyTextDest *)type->tp_alloc(type, 0);
- if (!self)
- return NULL;
-
- return (PyObject *)self;
-}
-
-/* init function to create the textdest */
-PyDoc_STRVAR(PyTextDest_doc,
- "__init__(target, level=MSGLEVEL_CLIENTNOTICE, server=None, window=None)\n"
- "\n"
- "Create a TextDest\n"
-);
-static int PyTextDest_init(PyTextDest *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"target", "level", "server", "window", NULL};
- char *target;
- int level = MSGLEVEL_CLIENTNOTICE;
- PyObject *server = NULL, *window = NULL;
- TEXT_DEST_REC *dest;
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|ioo", kwlist,
- &target, &level, &server, &window))
- return -1;
-
- if (server == Py_None)
- server = NULL;
- if (window == Py_None)
- window = NULL;
-
- if (server && !pyserver_check(server))
- {
- PyErr_Format(PyExc_TypeError, "arg 3 isnt server");
- return -1;
- }
-
- if (window && !pywindow_check(window))
- {
- PyErr_Format(PyExc_TypeError, "arg 4 isnt window");
- return -1;
- }
-
- if (self->data)
- {
- PyErr_Format(PyExc_RuntimeError, "TextDest already wrapped");
- return -1;
- }
-
- dest = g_new0(TEXT_DEST_REC, 1);
- format_create_dest(dest, DATA(server), g_strdup(target), level, DATA(window));
-
- if (!pytextdest_setup(self, dest, 1))
- return -1;
-
- return 0;
-}
-
-/* Getters */
-PyDoc_STRVAR(PyTextDest_window_doc,
- "Window where the text will be written"
-);
-static PyObject *PyTextDest_window_get(PyTextDest *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_OBJ_OR_NONE(self->window);
-}
-
-PyDoc_STRVAR(PyTextDest_server_doc,
- "Target server"
-);
-static PyObject *PyTextDest_server_get(PyTextDest *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_OBJ_OR_NONE(self->server);
-}
-
-PyDoc_STRVAR(PyTextDest_target_doc,
- "Target channel/query/etc name"
-);
-static PyObject *PyTextDest_target_get(PyTextDest *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->target);
-}
-
-PyDoc_STRVAR(PyTextDest_level_doc,
- "Text level"
-);
-static PyObject *PyTextDest_level_get(PyTextDest *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->level);
-}
-
-PyDoc_STRVAR(PyTextDest_hilight_priority_doc,
- "Priority for the hilighted text"
-);
-static PyObject *PyTextDest_hilight_priority_get(PyTextDest *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->hilight_priority);
-}
-
-PyDoc_STRVAR(PyTextDest_hilight_color_doc,
- "Color for the hilighted text"
-);
-static PyObject *PyTextDest_hilight_color_get(PyTextDest *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->hilight_color);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyTextDest_getseters[] = {
- {"window", (getter)PyTextDest_window_get, NULL,
- PyTextDest_window_doc, NULL},
- {"server", (getter)PyTextDest_server_get, NULL,
- PyTextDest_server_doc, NULL},
- {"target", (getter)PyTextDest_target_get, NULL,
- PyTextDest_target_doc, NULL},
- {"level", (getter)PyTextDest_level_get, NULL,
- PyTextDest_level_doc, NULL},
- {"hilight_priority", (getter)PyTextDest_hilight_priority_get, NULL,
- PyTextDest_hilight_priority_doc, NULL},
- {"hilight_color", (getter)PyTextDest_hilight_color_get, NULL,
- PyTextDest_hilight_color_doc, NULL},
- {NULL}
-};
-
-/* Methods */
-PyDoc_STRVAR(PyTextDest_prnt_doc,
- "prnt(str) -> None\n"
- "\n"
- "Print str to TextDest\n"
-);
-static PyObject *PyTextDest_prnt(PyTextDest *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"str", NULL};
- char *str = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &str))
- return NULL;
-
- printtext_dest(self->data, "%s", str);
-
- Py_RETURN_NONE;
-}
-
-/* Methods for object */
-static PyMethodDef PyTextDest_methods[] = {
- {"prnt", (PyCFunction)PyTextDest_prnt, METH_VARARGS | METH_KEYWORDS,
- PyTextDest_prnt_doc},
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyTextDestType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "TextDest", /*tp_name*/
- sizeof(PyTextDest), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyTextDest_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*/
- PyTextDest_doc, /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyTextDest_methods, /* tp_methods */
- 0, /* tp_members */
- PyTextDest_getseters, /* tp_getset */
- 0, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- (initproc)PyTextDest_init, /* tp_init */
- 0, /* tp_alloc */
- PyTextDest_new, /* tp_new */
-};
-
-static int pytextdest_setup(PyTextDest *pytdest, void *td, int owned)
-{
- PyObject *window, *server;
- TEXT_DEST_REC *tdest = td;
-
- if (tdest->window)
- {
- window = pywindow_new(tdest->window);
- if (!window)
- return 0;
- }
-
- server = py_irssi_chat_new(tdest->server, 1);
- if (!server)
- {
- Py_DECREF(window);
- return 0;
- }
-
- pytdest->data = td;
- pytdest->window = window;
- pytdest->server = server;
- pytdest->owned = owned;
-
- return 1;
-}
-
-/* TextDest factory function */
-PyObject *pytextdest_new(void *td)
-{
- PyTextDest *pytdest;
-
- pytdest = py_inst(PyTextDest, PyTextDestType);
- if (!pytdest)
- return NULL;
-
- if (!pytextdest_setup(pytdest, td, 0))
- {
- Py_DECREF(pytdest);
- return NULL;
- }
-
- return (PyObject *)pytdest;
-}
-
-int textdest_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyTextDestType) < 0)
- return 0;
-
- Py_INCREF(&PyTextDestType);
- PyModule_AddObject(py_module, "TextDest", (PyObject *)&PyTextDestType);
-
- return 1;
-}
diff --git a/objects/textdest-object.h b/objects/textdest-object.h
deleted file mode 100644
index 3e273e6..0000000
--- a/objects/textdest-object.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef _TEXTDEST_OBJECT_H_
-#define _TEXTDEST_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-/* forward */
-struct _TEXT_DEST_REC;
-
-typedef struct
-{
- PyIrssiFinal_HEAD(struct _TEXT_DEST_REC)
- PyObject *window;
- PyObject *server;
- int owned;
-} PyTextDest;
-
-extern PyTypeObject PyTextDestType;
-
-int textdest_object_init(void);
-PyObject *pytextdest_new(void *td);
-#define pytextdest_check(op) PyObject_TypeCheck(op, &PyTextDestType)
-
-#endif
diff --git a/objects/theme-object.c b/objects/theme-object.c
deleted file mode 100644
index 0f12217..0000000
--- a/objects/theme-object.c
+++ /dev/null
@@ -1,195 +0,0 @@
-#include <Python.h>
-#include "pyirssi.h"
-#include "pymodule.h"
-#include "theme-object.h"
-#include "factory.h"
-#include "pycore.h"
-
-/* monitor "theme destroyed" signal */
-static void theme_cleanup(THEME_REC *rec)
-{
- PyTheme *pytheme = signal_get_user_data();
- if (pytheme->data == rec)
- {
- pytheme->data = NULL;
- pytheme->cleanup_installed = 0;
- signal_remove_data("theme destroyed", theme_cleanup, pytheme);
- }
-}
-
-static void PyTheme_dealloc(PyTheme *self)
-{
- if (self->cleanup_installed)
- signal_remove_data("theme destroyed", theme_cleanup, self);
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-static PyObject *PyTheme_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- PyTheme *self;
-
- self = (PyTheme *)type->tp_alloc(type, 0);
- if (!self)
- return NULL;
-
- return (PyObject *)self;
-}
-
-/* Getters */
-/* specialized getters/setters */
-static PyGetSetDef PyTheme_getseters[] = {
- {NULL}
-};
-
-/* Methods */
-PyDoc_STRVAR(PyTheme_format_expand_doc,
- "format_expand(format, flags=0) -> str or None\n"
-);
-static PyObject *PyTheme_format_expand(PyTheme *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"format", "flags", NULL};
- char *format = "";
- int flags = 0;
- char *ret;
- PyObject *pyret;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|i", kwlist,
- &format, &flags))
- return NULL;
-
- if (flags == 0)
- ret = theme_format_expand(self->data, format);
- else
- ret = theme_format_expand_data(self->data, (const char **)&format, 'n', 'n',
- NULL, NULL, EXPAND_FLAG_ROOT | flags);
-
- if (ret)
- {
- pyret = PyString_FromString(ret);
- g_free(ret);
- return pyret;
- }
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyTheme_get_format_doc,
- "get_format(module, tag) -> str\n"
-);
-static PyObject *PyTheme_get_format(PyTheme *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"module", "tag", NULL};
- char *module = "";
- char *tag = "";
- THEME_REC *theme = self->data;
- FORMAT_REC *formats;
- MODULE_THEME_REC *modtheme;
- int i;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "ss", kwlist,
- &module, &tag))
- return NULL;
-
- formats = g_hash_table_lookup(default_formats, module);
- if (!formats)
- return PyErr_Format(PyExc_KeyError, "unknown module, %s", module);
-
- for (i = 0; formats[i].def; i++)
- {
- if (formats[i].tag && !g_strcasecmp(formats[i].tag, tag))
- {
- modtheme = g_hash_table_lookup(theme->modules, module);
- if (modtheme && modtheme->formats[i])
- return PyString_FromString(modtheme->formats[i]);
- else
- return PyString_FromString(formats[i].def);
- }
- }
-
- return PyErr_Format(PyExc_KeyError, "unknown format tag, %s", tag);
-}
-
-/* Methods for object */
-static PyMethodDef PyTheme_methods[] = {
- {"format_expand", (PyCFunction)PyTheme_format_expand, METH_VARARGS | METH_KEYWORDS,
- PyTheme_format_expand_doc},
- {"get_format", (PyCFunction)PyTheme_get_format, METH_VARARGS | METH_KEYWORDS,
- PyTheme_get_format_doc},
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyThemeType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Theme", /*tp_name*/
- sizeof(PyTheme), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyTheme_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*/
- 0, /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyTheme_methods, /* tp_methods */
- 0, /* tp_members */
- PyTheme_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 */
- PyTheme_new, /* tp_new */
-};
-
-/* Theme factory function */
-PyObject *pytheme_new(void *td)
-{
- PyTheme *pytheme;
-
- pytheme = py_inst(PyTheme, PyThemeType);
- if (!pytheme)
- return NULL;
-
- pytheme->data = td;
- signal_add_last_data("theme destroyed", theme_cleanup, pytheme);
- pytheme->cleanup_installed = 1;
-
- return (PyObject *)pytheme;
-}
-
-int theme_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyThemeType) < 0)
- return 0;
-
- Py_INCREF(&PyThemeType);
- PyModule_AddObject(py_module, "Theme", (PyObject *)&PyThemeType);
-
- return 1;
-}
diff --git a/objects/theme-object.h b/objects/theme-object.h
deleted file mode 100644
index 299d54d..0000000
--- a/objects/theme-object.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef _THEME_OBJECT_H_
-#define _THEME_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-typedef struct
-{
- PyIrssiFinal_HEAD(void)
-} PyTheme;
-
-extern PyTypeObject PyThemeType;
-
-int theme_object_init(void);
-PyObject *pytheme_new(void *td);
-#define pytheme_check(op) PyObject_TypeCheck(op, &PyThemeType)
-
-#endif
diff --git a/objects/window-item-object.c b/objects/window-item-object.c
deleted file mode 100644
index 2f18f7d..0000000
--- a/objects/window-item-object.c
+++ /dev/null
@@ -1,334 +0,0 @@
-#include <Python.h>
-#include "pymodule.h"
-#include "base-objects.h"
-#include "window-item-object.h"
-#include "pyirssi.h"
-#include "pycore.h"
-#include "pyutils.h"
-#include "factory.h"
-
-/* Dealloc is overridden by sub types */
-
-PyDoc_STRVAR(PyWindowItem_server_doc,
- "Active name for item"
-);
-static PyObject *PyWindowItem_server_get(PyWindowItem *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_OBJ_OR_NONE(self->server);
-}
-
-PyDoc_STRVAR(PyWindowItem_name_doc,
- "Name of the item"
-);
-static PyObject *PyWindowItem_name_get(PyWindowItem *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->visible_name);
-}
-
-PyDoc_STRVAR(PyWindowItem_createtime_doc,
- "Time the witem was created"
-);
-static PyObject *PyWindowItem_createtime_get(PyWindowItem *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyLong_FromLong(self->data->createtime);
-}
-
-PyDoc_STRVAR(PyWindowItem_data_level_doc,
- "0=no new data, 1=text, 2=msg, 3=highlighted text"
-);
-static PyObject *PyWindowItem_data_level_get(PyWindowItem *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->data_level);
-}
-
-PyDoc_STRVAR(PyWindowItem_hilight_color_doc,
- "Color of the last highlighted text"
-);
-static PyObject *PyWindowItem_hilight_color_get(PyWindowItem *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->hilight_color);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyWindowItem_getseters[] = {
- {"server", (getter)PyWindowItem_server_get, NULL,
- PyWindowItem_server_doc, NULL},
- {"name", (getter)PyWindowItem_name_get, NULL,
- PyWindowItem_name_doc, NULL},
- {"createtime", (getter)PyWindowItem_createtime_get, NULL,
- PyWindowItem_createtime_doc, NULL},
- {"data_level", (getter)PyWindowItem_data_level_get, NULL,
- PyWindowItem_data_level_doc, NULL},
- {"hilight_color", (getter)PyWindowItem_hilight_color_get, NULL,
- PyWindowItem_hilight_color_doc, NULL},
- {NULL}
-};
-
-/* Methods */
-PyDoc_STRVAR(PyWindowItem_prnt_doc,
- "prnt(str, level) -> None\n"
- "\n"
- "Print to window item\n"
-);
-static PyObject *PyWindowItem_prnt(PyWindowItem *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"str", "level", NULL};
- char *str;
- int level = MSGLEVEL_CLIENTNOTICE;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|i", kwlist, &str, &level))
- return NULL;
-
- printtext_string(self->data->server, self->data->visible_name, level, str);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindowItem_command_doc,
- "command(cmd) -> None\n"
- "\n"
- "Send command to window item\n"
-);
-static PyObject *PyWindowItem_command(PyWindowItem *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"cmd", NULL};
- char *cmd;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, &cmd))
- return NULL;
-
- py_command(cmd, self->data->server, self->data);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindowItem_window_doc,
- "window() -> Window object or None\n"
- "\n"
- "Return parent window for window item\n"
-);
-static PyObject *PyWindowItem_window(PyWindowItem *self, PyObject *args)
-{
- WINDOW_REC *win;
-
- RET_NULL_IF_INVALID(self->data);
-
- win = window_item_window(self->data);
- if (win)
- return pywindow_new(win);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindowItem_change_server_doc,
- "change_server(server) -> None\n"
- "\n"
- "Change server for window item\n"
-);
-static PyObject *PyWindowItem_change_server(PyWindowItem *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"server", NULL};
- PyObject *server = NULL;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", kwlist,
- &server))
- return NULL;
-
- if (!pyserver_check(server))
- return PyErr_Format(PyExc_TypeError, "arg must be server");
-
- window_item_change_server(self->data, ((PyServer*)server)->data);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindowItem_is_active_doc,
- "is_active() -> bool\n"
- "\n"
- "Returns true if window item is active\n"
-);
-static PyObject *PyWindowItem_is_active(PyWindowItem *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- return PyBool_FromLong(window_item_is_active(self->data));
-}
-
-PyDoc_STRVAR(PyWindowItem_set_active_doc,
- "set_active() -> None\n"
- "\n"
- "Set window item active\n"
-);
-static PyObject *PyWindowItem_set_active(PyWindowItem *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- window_item_set_active(window_item_window(self->data), self->data);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindowItem_activity_doc,
- "activity(data_level, hilight_color) -> None\n"
- "\n"
-);
-static PyObject *PyWindowItem_activity(PyWindowItem *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"data_level", "hilight_color", NULL};
- int data_level = 0;
- char *hilight_color = NULL;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "is", kwlist,
- &data_level, &hilight_color))
- return NULL;
-
- window_item_activity(self->data, data_level, hilight_color);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindowItem_destroy_doc,
- "destroy() -> None\n"
- "\n"
- "Destroy channel or query\n"
-);
-static PyObject *PyWindowItem_destroy(PyWindowItem *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- window_item_destroy(self->data);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindowItem_get_dcc_doc,
- "get_dcc() -> DccChat object or None\n"
- "\n"
- "If item is a query of a =nick, return DCC chat record of nick\n"
-);
-static PyObject *PyWindowItem_get_dcc(PyWindowItem *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
- return py_irssi_new(self->data, 1);
-}
-
-/* Methods for object */
-static PyMethodDef PyWindowItem_methods[] = {
- {"prnt", (PyCFunction)PyWindowItem_prnt, METH_VARARGS | METH_KEYWORDS,
- PyWindowItem_prnt_doc},
- {"command", (PyCFunction)PyWindowItem_command, METH_VARARGS | METH_KEYWORDS,
- PyWindowItem_command_doc},
- {"window", (PyCFunction)PyWindowItem_window, METH_NOARGS,
- PyWindowItem_window_doc},
- {"change_server", (PyCFunction)PyWindowItem_change_server, METH_VARARGS | METH_KEYWORDS,
- PyWindowItem_change_server_doc},
- {"is_active", (PyCFunction)PyWindowItem_is_active, METH_NOARGS,
- PyWindowItem_is_active_doc},
- {"set_active", (PyCFunction)PyWindowItem_set_active, METH_NOARGS,
- PyWindowItem_set_active_doc},
- {"activity", (PyCFunction)PyWindowItem_activity, METH_VARARGS | METH_KEYWORDS,
- PyWindowItem_activity_doc},
- {"destroy", (PyCFunction)PyWindowItem_destroy, METH_NOARGS,
- PyWindowItem_destroy_doc},
- {"get_dcc", (PyCFunction)PyWindowItem_get_dcc, METH_NOARGS,
- PyWindowItem_get_dcc_doc},
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyWindowItemType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "WindowItem", /*tp_name*/
- sizeof(PyWindowItem), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- 0, /*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*/
- "PyWindowItem objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyWindowItem_methods, /* tp_methods */
- 0, /* tp_members */
- PyWindowItem_getseters, /* tp_getset */
- &PyIrssiChatBaseType, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
-};
-
-
-/* window item wrapper factory function */
-PyObject *pywindow_item_sub_new(void *witem, const char *name, PyTypeObject *subclass)
-{
- WI_ITEM_REC *rec = witem;
- PyWindowItem *pywitem = NULL;
- PyObject *server;
-
- g_return_val_if_fail(witem != NULL, NULL);
-
- server = py_irssi_chat_new(rec->server, 1);
- if (!server)
- return NULL;
-
- pywitem = py_instp(PyWindowItem, subclass);
- if (!pywitem)
- return NULL;
-
- pywitem->data = witem;
- pywitem->base_name = name;
- pywitem->server = server;
-
- return (PyObject *)pywitem;
-}
-
-PyObject *pywindow_item_new(void *witem)
-{
- return pywindow_item_sub_new(witem, NULL, &PyWindowItemType);
-}
-
-int window_item_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyWindowItemType) < 0)
- return 0;
-
- Py_INCREF(&PyWindowItemType);
- PyModule_AddObject(py_module, "WindowItem", (PyObject *)&PyWindowItemType);
-
- return 1;
-}
diff --git a/objects/window-item-object.h b/objects/window-item-object.h
deleted file mode 100644
index e205ebe..0000000
--- a/objects/window-item-object.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef _WITEM_OBJECT_H_
-#define _WITEM_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-#define PyWindowItem_HEAD(type) \
- PyIrssi_HEAD(type) \
- PyObject *server;
-
-/* forward */
-struct _WI_ITEM_REC;
-
-typedef struct
-{
- PyWindowItem_HEAD(struct _WI_ITEM_REC)
-} PyWindowItem;
-
-extern PyTypeObject PyWindowItemType;
-
-int window_item_object_init(void);
-PyObject *pywindow_item_sub_new(void *witem, const char *name, PyTypeObject *subclass);
-PyObject *pywindow_item_new(void *witem);
-#define pywindow_item_check(op) PyObject_TypeCheck(op, &PyWindowItemType)
-
-#endif
diff --git a/objects/window-object.c b/objects/window-object.c
deleted file mode 100644
index d5aa475..0000000
--- a/objects/window-object.c
+++ /dev/null
@@ -1,678 +0,0 @@
-#include <Python.h>
-#include "pyirssi_irc.h"
-#include "pymodule.h"
-#include "window-object.h"
-#include "factory.h"
-#include "pycore.h"
-#include "pyutils.h"
-
-/* monitor "window destroyed" signal */
-static void window_cleanup(WINDOW_REC *win)
-{
- PyWindow *pywindow = signal_get_user_data();
-
- if (win == pywindow->data)
- {
- pywindow->data = NULL;
- pywindow->cleanup_installed = 0;
- signal_remove_data("window destroyed", window_cleanup, pywindow);
- }
-}
-
-static void PyWindow_dealloc(PyWindow *self)
-{
- if (self->cleanup_installed)
- signal_remove_data("window destroyed", window_cleanup, self);
-
- self->ob_type->tp_free((PyObject*)self);
-}
-
-static PyObject *PyWindow_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- PyWindow *self;
-
- self = (PyWindow *)type->tp_alloc(type, 0);
- if (!self)
- return NULL;
-
- return (PyObject *)self;
-}
-
-/* Getters */
-PyDoc_STRVAR(PyWindow_refnum_doc,
- "Reference number"
-);
-static PyObject *PyWindow_refnum_get(PyWindow *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->refnum);
-}
-
-PyDoc_STRVAR(PyWindow_name_doc,
- "Name"
-);
-static PyObject *PyWindow_name_get(PyWindow *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->name);
-}
-
-PyDoc_STRVAR(PyWindow_width_doc,
- "Width"
-);
-static PyObject *PyWindow_width_get(PyWindow *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->width);
-}
-
-PyDoc_STRVAR(PyWindow_height_doc,
- "Height"
-);
-static PyObject *PyWindow_height_get(PyWindow *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->height);
-}
-
-PyDoc_STRVAR(PyWindow_history_name_doc,
- "Name of named historylist for this window"
-);
-static PyObject *PyWindow_history_name_get(PyWindow *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->history_name);
-}
-
-PyDoc_STRVAR(PyWindow_active_doc,
- "Active window item"
-);
-static PyObject *PyWindow_active_get(PyWindow *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return py_irssi_chat_new(self->data->active, 1);
-}
-
-PyDoc_STRVAR(PyWindow_active_server_doc,
- "Active server"
-);
-static PyObject *PyWindow_active_server_get(PyWindow *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return py_irssi_chat_new(self->data->active_server, 1);
-}
-
-PyDoc_STRVAR(PyWindow_servertag_doc,
- "active_server must be either None or have this same tag"
- "(unless there's items in this window). This is used by"
- "/WINDOW SERVER -sticky"
-);
-static PyObject *PyWindow_servertag_get(PyWindow *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->servertag);
-}
-
-PyDoc_STRVAR(PyWindow_level_doc,
- "Current window level"
-);
-static PyObject *PyWindow_level_get(PyWindow *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->level);
-}
-
-PyDoc_STRVAR(PyWindow_sticky_refnum_doc,
- "True if reference number is sticky"
-);
-static PyObject *PyWindow_sticky_refnum_get(PyWindow *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyBool_FromLong(self->data->sticky_refnum);
-}
-
-PyDoc_STRVAR(PyWindow_data_level_doc,
- "Current data level"
-);
-static PyObject *PyWindow_data_level_get(PyWindow *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyInt_FromLong(self->data->data_level);
-}
-
-PyDoc_STRVAR(PyWindow_hilight_color_doc,
- "Current activity hilight color"
-);
-static PyObject *PyWindow_hilight_color_get(PyWindow *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->hilight_color);
-}
-
-PyDoc_STRVAR(PyWindow_last_timestamp_doc,
- "Last time timestamp was written in window"
-);
-static PyObject *PyWindow_last_timestamp_get(PyWindow *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyLong_FromUnsignedLong(self->data->last_timestamp);
-}
-
-PyDoc_STRVAR(PyWindow_last_line_doc,
- "Last time text was written in window"
-);
-static PyObject *PyWindow_last_line_get(PyWindow *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- return PyLong_FromUnsignedLong(self->data->last_line);
-}
-
-PyDoc_STRVAR(PyWindow_theme_name_doc,
- "Active theme in window, None = default"
-);
-static PyObject *PyWindow_theme_name_get(PyWindow *self, void *closure)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(self->data->theme_name);
-}
-
-/* specialized getters/setters */
-static PyGetSetDef PyWindow_getseters[] = {
- {"refnum", (getter)PyWindow_refnum_get, NULL,
- PyWindow_refnum_doc, NULL},
- {"name", (getter)PyWindow_name_get, NULL,
- PyWindow_name_doc, NULL},
- {"width", (getter)PyWindow_width_get, NULL,
- PyWindow_width_doc, NULL},
- {"height", (getter)PyWindow_height_get, NULL,
- PyWindow_height_doc, NULL},
- {"history_name", (getter)PyWindow_history_name_get, NULL,
- PyWindow_history_name_doc, NULL},
- {"active", (getter)PyWindow_active_get, NULL,
- PyWindow_active_doc, NULL},
- {"active_server", (getter)PyWindow_active_server_get, NULL,
- PyWindow_active_server_doc, NULL},
- {"servertag", (getter)PyWindow_servertag_get, NULL,
- PyWindow_servertag_doc, NULL},
- {"level", (getter)PyWindow_level_get, NULL,
- PyWindow_level_doc, NULL},
- {"sticky_refnum", (getter)PyWindow_sticky_refnum_get, NULL,
- PyWindow_sticky_refnum_doc, NULL},
- {"data_level", (getter)PyWindow_data_level_get, NULL,
- PyWindow_data_level_doc, NULL},
- {"hilight_color", (getter)PyWindow_hilight_color_get, NULL,
- PyWindow_hilight_color_doc, NULL},
- {"last_timestamp", (getter)PyWindow_last_timestamp_get, NULL,
- PyWindow_last_timestamp_doc, NULL},
- {"last_line", (getter)PyWindow_last_line_get, NULL,
- PyWindow_last_line_doc, NULL},
- {"theme_name", (getter)PyWindow_theme_name_get, NULL,
- PyWindow_theme_name_doc, NULL},
- {NULL}
-};
-
-/* Methods */
-PyDoc_STRVAR(PyWindow_items_doc,
- "items() -> list of WindowItem objects\n"
- "\n"
- "Return a list of items in window.\n"
-);
-static PyObject *PyWindow_items(PyWindow *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
- return py_irssi_chatlist_new(self->data->items, 1);
-}
-
-PyDoc_STRVAR(PyWindow_prnt_doc,
- "prnt(str, level=MSGLEVEL_CLIENTNOTICE) -> None\n"
- "\n"
- "Print to window\n"
-);
-static PyObject *PyWindow_prnt(PyWindow *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"str", "level", NULL};
- char *str = "";
- int level = MSGLEVEL_CLIENTNOTICE;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|i", kwlist,
- &str, &level))
- return NULL;
-
- printtext_string_window(self->data, level, str);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindow_command_doc,
- "command(cmd) -> None\n"
- "\n"
- "Send command to window\n"
-);
-static PyObject *PyWindow_command(PyWindow *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"cmd", NULL};
- char *cmd = "";
- WINDOW_REC *old;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &cmd))
- return NULL;
-
- old = active_win;
- active_win = self->data;
- py_command(cmd, active_win->active_server, active_win->active);
- if (g_slist_find(windows, old) != NULL)
- active_win = old;
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindow_item_add_doc,
- "item_add(item, automatic=False) -> None\n"
- "\n"
- "Add window item\n"
-);
-static PyObject *PyWindow_item_add(PyWindow *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"item", "automatic", NULL};
- PyObject *item = NULL;
- int automatic = 0;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|i", kwlist,
- &item, &automatic))
- return NULL;
-
- if (!pywindow_item_check(item))
- return PyErr_Format(PyExc_TypeError, "item must be window item");
-
- window_item_add(self->data, ((PyWindowItem*)item)->data, automatic);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindow_item_remove_doc,
- "item_remove(item) -> None\n"
- "\n"
- "Remove window item\n"
-);
-static PyObject *PyWindow_item_remove(PyWindow *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"item", NULL};
- PyObject *item = NULL;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", kwlist,
- &item))
- return NULL;
-
- if (!pywindow_item_check(item))
- return PyErr_Format(PyExc_TypeError, "item must be window item");
-
- window_item_remove(((PyWindowItem*)item)->data);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindow_item_destroy_doc,
- "item_destroy(item) -> None\n"
- "\n"
- "Destroy window item\n"
-);
-static PyObject *PyWindow_item_destroy(PyWindow *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"item", NULL};
- PyObject *item = NULL;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", kwlist,
- &item))
- return NULL;
-
- if (!pywindow_item_check(item))
- return PyErr_Format(PyExc_TypeError, "item must be window item");
-
- window_item_destroy(((PyWindowItem*)item)->data);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindow_item_prev_doc,
- "item_prev() -> None\n"
- "\n"
- "Change to previous window item\n"
-);
-static PyObject *PyWindow_item_prev(PyWindow *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- window_item_prev(self->data);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindow_item_next_doc,
- "item_next() -> None\n"
- "\n"
- "Change to next window item\n"
-);
-static PyObject *PyWindow_item_next(PyWindow *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- window_item_next(self->data);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindow_destroy_doc,
- "destroy() -> None\n"
- "\n"
- "Destroy the window.\n"
-);
-static PyObject *PyWindow_destroy(PyWindow *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- window_destroy(self->data);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindow_set_active_doc,
- "set_active() -> None\n"
- "\n"
- "Set window active.\n"
-);
-static PyObject *PyWindow_set_active(PyWindow *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
-
- window_set_active(self->data);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindow_change_server_doc,
- "change_server(server) -> None\n"
- "\n"
- "Change server in window\n"
-);
-static PyObject *PyWindow_change_server(PyWindow *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"server", NULL};
- PyObject *server = NULL;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", kwlist,
- &server))
- return NULL;
-
- if (!pyserver_check(server))
- return PyErr_Format(PyExc_TypeError, "arg must be server");
-
- window_change_server(self->data, ((PyServer*)server)->data);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindow_set_refnum_doc,
- "set_refnum(refnum) -> None\n"
- "\n"
- "Set window refnum\n"
-);
-static PyObject *PyWindow_set_refnum(PyWindow *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"refnum", NULL};
- int refnum = 0;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "i", kwlist,
- &refnum))
- return NULL;
-
- window_set_refnum(self->data, refnum);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindow_set_name_doc,
- "set_name(name) -> None\n"
- "\n"
- "Set window name\n"
-);
-static PyObject *PyWindow_set_name(PyWindow *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"name", NULL};
- char *name = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &name))
- return NULL;
-
- window_set_name(self->data, name);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindow_set_history_doc,
- "set_history(history) -> None\n"
- "\n"
- "Set window history\n"
-);
-static PyObject *PyWindow_set_history(PyWindow *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"history", NULL};
- char *history = "";
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
- &history))
- return NULL;
-
- window_set_history(self->data, history);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindow_set_level_doc,
- "set_level(level) -> None\n"
- "\n"
- "Set window level\n"
-);
-static PyObject *PyWindow_set_level(PyWindow *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"level", NULL};
- int level = 0;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "i", kwlist,
- &level))
- return NULL;
-
- window_set_level(self->data, level);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindow_activity_doc,
- "activity(data_level, hilight_color) -> None\n"
- "\n"
-);
-static PyObject *PyWindow_activity(PyWindow *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"data_level", "hilight_color", NULL};
- int data_level = 0;
- char *hilight_color = NULL;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "i|s", kwlist,
- &data_level, &hilight_color))
- return NULL;
-
- window_activity(self->data, data_level, hilight_color);
-
- Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(PyWindow_get_active_name_doc,
- "get_active_name() -> str or None\n"
- "\n"
- "Return active item's name, or if none is active, window's name.\n"
-);
-static PyObject *PyWindow_get_active_name(PyWindow *self, PyObject *args)
-{
- RET_NULL_IF_INVALID(self->data);
- RET_AS_STRING_OR_NONE(window_get_active_name(self->data));
-}
-
-PyDoc_STRVAR(PyWindow_item_find_doc,
- "item_find(server, name) -> WindowItem or None\n"
- "\n"
- "Find window item that matches best to given arguments\n"
-);
-static PyObject *PyWindow_item_find(PyWindow *self, PyObject *args, PyObject *kwds)
-{
- static char *kwlist[] = {"server", "name", NULL};
- PyObject *server = NULL;
- char *name = "";
- WI_ITEM_REC *witem;
-
- RET_NULL_IF_INVALID(self->data);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "Os", kwlist,
- &server, &name))
- return NULL;
-
- if (!pyserver_check(server))
- return PyErr_Format(PyExc_TypeError, "arg 1 must be server");
-
- witem = window_item_find_window(self->data, ((PyServer*)server)->data, name);
- return py_irssi_chat_new(witem, 1);
-}
-
-static PyMethodDef PyWindow_methods[] = {
- {"items", (PyCFunction)PyWindow_items, METH_NOARGS,
- PyWindow_items_doc},
- {"prnt", (PyCFunction)PyWindow_prnt, METH_VARARGS | METH_KEYWORDS,
- PyWindow_prnt_doc},
- {"command", (PyCFunction)PyWindow_command, METH_VARARGS | METH_KEYWORDS,
- PyWindow_command_doc},
- {"item_add", (PyCFunction)PyWindow_item_add, METH_VARARGS | METH_KEYWORDS,
- PyWindow_item_add_doc},
- {"item_remove", (PyCFunction)PyWindow_item_remove, METH_VARARGS | METH_KEYWORDS,
- PyWindow_item_remove_doc},
- {"item_destroy", (PyCFunction)PyWindow_item_destroy, METH_VARARGS | METH_KEYWORDS,
- PyWindow_item_destroy_doc},
- {"item_prev", (PyCFunction)PyWindow_item_prev, METH_NOARGS,
- PyWindow_item_prev_doc},
- {"item_next", (PyCFunction)PyWindow_item_next, METH_NOARGS,
- PyWindow_item_next_doc},
- {"destroy", (PyCFunction)PyWindow_destroy, METH_NOARGS,
- PyWindow_destroy_doc},
- {"set_active", (PyCFunction)PyWindow_set_active, METH_NOARGS,
- PyWindow_set_active_doc},
- {"change_server", (PyCFunction)PyWindow_change_server, METH_VARARGS | METH_KEYWORDS,
- PyWindow_change_server_doc},
- {"set_refnum", (PyCFunction)PyWindow_set_refnum, METH_VARARGS | METH_KEYWORDS,
- PyWindow_set_refnum_doc},
- {"set_name", (PyCFunction)PyWindow_set_name, METH_VARARGS | METH_KEYWORDS,
- PyWindow_set_name_doc},
- {"set_history", (PyCFunction)PyWindow_set_history, METH_VARARGS | METH_KEYWORDS,
- PyWindow_set_history_doc},
- {"set_level", (PyCFunction)PyWindow_set_level, METH_VARARGS | METH_KEYWORDS,
- PyWindow_set_level_doc},
- {"activity", (PyCFunction)PyWindow_activity, METH_VARARGS | METH_KEYWORDS,
- PyWindow_activity_doc},
- {"get_active_name", (PyCFunction)PyWindow_get_active_name, METH_NOARGS,
- PyWindow_get_active_name_doc},
- {"item_find", (PyCFunction)PyWindow_item_find, METH_VARARGS | METH_KEYWORDS,
- PyWindow_item_find_doc},
- {NULL} /* Sentinel */
-};
-
-PyTypeObject PyWindowType = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Window", /*tp_name*/
- sizeof(PyWindow), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- (destructor)PyWindow_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*/
- "PyWindow objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- PyWindow_methods, /* tp_methods */
- 0, /* tp_members */
- PyWindow_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 */
- PyWindow_new, /* tp_new */
-};
-
-
-/* window item wrapper factory function */
-PyObject *pywindow_new(void *win)
-{
- PyWindow *pywindow;
-
- pywindow = py_inst(PyWindow, PyWindowType);
- if (!pywindow)
- return NULL;
-
- pywindow->data = win;
- pywindow->cleanup_installed = 1;
- signal_add_last_data("window destroyed", window_cleanup, pywindow);
-
- return (PyObject *)pywindow;
-}
-
-int window_object_init(void)
-{
- g_return_val_if_fail(py_module != NULL, 0);
-
- if (PyType_Ready(&PyWindowType) < 0)
- return 0;
-
- Py_INCREF(&PyWindowType);
- PyModule_AddObject(py_module, "Window", (PyObject *)&PyWindowType);
-
- return 1;
-}
diff --git a/objects/window-object.h b/objects/window-object.h
deleted file mode 100644
index b9860af..0000000
--- a/objects/window-object.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef _WINDOW_OBJECT_H_
-#define _WINDOW_OBJECT_H_
-
-#include <Python.h>
-#include "base-objects.h"
-
-/* forward */
-struct _WINDOW_REC;
-
-typedef struct
-{
- PyIrssiFinal_HEAD(struct _WINDOW_REC)
-} PyWindow;
-
-extern PyTypeObject PyWindowType;
-
-int window_object_init(void);
-PyObject *pywindow_new(void *win);
-#define pywindow_check(op) PyObject_TypeCheck(op, &PyWindowType)
-
-#endif