summaryrefslogtreecommitdiffstats
path: root/objects/window-object.c
diff options
context:
space:
mode:
Diffstat (limited to 'objects/window-object.c')
-rw-r--r--objects/window-object.c678
1 files changed, 0 insertions, 678 deletions
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;
-}