1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-21 18:36:39 +02:00

adding functions : get_buffer_info, get_window_info, get_buffer_data and print_server in scripts API

This commit is contained in:
Emmanuel Bouthenot
2006-08-05 14:23:38 +00:00
parent 8ee907af02
commit 22b80dec65
8 changed files with 1996 additions and 248 deletions
+228 -24
View File
@@ -267,6 +267,41 @@ weechat_python_print (PyObject *self, PyObject *args)
return Py_BuildValue ("i", 1);
}
/*
* weechat_python_print_server: print message into a buffer server
*/
static PyObject *
weechat_python_print_server (PyObject *self, PyObject *args)
{
char *message;
/* make gcc happy */
(void) self;
if (!python_current_script)
{
python_plugin->print_server (python_plugin,
"Python error: unable to print message (server), "
"script not initialized");
return Py_BuildValue ("i", 0);
}
message = NULL;
if (!PyArg_ParseTuple (args, "s", &message))
{
python_plugin->print_server (python_plugin,
"Python error: wrong parameters for "
"\"print_server\" function");
return Py_BuildValue ("i", 0);
}
python_plugin->print_server (python_plugin, "%s", message);
return Py_BuildValue ("i", 1);
}
/*
* weechat_python_print_infobar: print message to infobar
*/
@@ -822,22 +857,9 @@ weechat_python_get_dcc_info (PyObject *self, PyObject *args)
PyDict_SetItem(dcc_list_member, Py_BuildValue("s", "start_resume"),
Py_BuildValue("k", ptr_dcc->start_resume));
PyDict_SetItem(dcc_list_member, Py_BuildValue("s", "cps"),
Py_BuildValue("k", ptr_dcc->bytes_per_sec));
Py_BuildValue("k", ptr_dcc->bytes_per_sec));
if (PyList_Append(dcc_list, dcc_list_member) != 0)
{
Py_DECREF(dcc_list_member);
Py_DECREF(dcc_list);
python_plugin->free_dcc_info (python_plugin, dcc_info);
return Py_None;
}
}
else
{
Py_DECREF(dcc_list);
python_plugin->free_dcc_info (python_plugin, dcc_info);
return Py_None;
PyList_Append(dcc_list, dcc_list_member);
}
}
@@ -864,7 +886,7 @@ weechat_python_get_config (PyObject *self, PyObject *args)
python_plugin->print_server (python_plugin,
"Python error: unable to get config option, "
"script not initialized");
return Py_BuildValue ("i", 0);
return Py_None;
}
option = NULL;
@@ -874,7 +896,7 @@ weechat_python_get_config (PyObject *self, PyObject *args)
python_plugin->print_server (python_plugin,
"Python error: wrong parameters for "
"\"get_config\" function");
return Py_BuildValue ("i", 0);
return Py_None;
}
if (option)
@@ -950,7 +972,7 @@ weechat_python_get_plugin_config (PyObject *self, PyObject *args)
python_plugin->print_server (python_plugin,
"Python error: unable to get plugin config option, "
"script not initialized");
return Py_BuildValue ("i", 0);
return Py_None;
}
option = NULL;
@@ -960,7 +982,7 @@ weechat_python_get_plugin_config (PyObject *self, PyObject *args)
python_plugin->print_server (python_plugin,
"Python error: wrong parameters for "
"\"get_plugin_config\" function");
return Py_BuildValue ("i", 0);
return Py_None;
}
if (option)
@@ -1042,7 +1064,7 @@ weechat_python_get_server_info (PyObject *self, PyObject *args)
python_plugin->print_server (python_plugin,
"Python error: unable to get server infos, "
"script not initialized");
return Py_BuildValue ("i", 0);
return Py_None;
}
server_hash = PyDict_New ();
@@ -1145,7 +1167,7 @@ weechat_python_get_channel_info (PyObject *self, PyObject *args)
python_plugin->print_server (python_plugin,
"Python error: unable to get channel infos, "
"script not initialized");
return Py_BuildValue ("i", 0);
return Py_None;
}
server = NULL;
@@ -1154,7 +1176,7 @@ weechat_python_get_channel_info (PyObject *self, PyObject *args)
python_plugin->print_server (python_plugin,
"Python error: wrong parameters for "
"\"get_channel_info\" function");
return Py_BuildValue ("i", 0);
return Py_None;
}
channel_hash = PyDict_New ();
@@ -1212,7 +1234,7 @@ weechat_python_get_nick_info (PyObject *self, PyObject *args)
python_plugin->print_server (python_plugin,
"Python error: unable to get nick infos, "
"script not initialized");
return Py_BuildValue ("i", 0);
return Py_None;
}
server = NULL;
@@ -1222,7 +1244,7 @@ weechat_python_get_nick_info (PyObject *self, PyObject *args)
python_plugin->print_server (python_plugin,
"Python error: wrong parameters for "
"\"get_nick_info\" function");
return Py_BuildValue ("i", 0);
return Py_None;
}
nick_hash = PyDict_New ();
@@ -1290,6 +1312,184 @@ weechat_python_get_irc_color (PyObject *self, PyObject *args)
return Py_BuildValue ("i", -1);
}
/*
* weechat_python_get_window_info: get infos about windows
*/
static PyObject *
weechat_python_get_window_info (PyObject *self, PyObject *args)
{
t_plugin_window_info *window_info, *ptr_window;
PyObject *window_list, *window_list_member;
/* make gcc happy */
(void) self;
(void) args;
if (!python_current_script)
{
python_plugin->print_server (python_plugin,
"Python error: unable to get window info, "
"script not initialized");
return Py_None;
}
window_list = PyList_New (0);
if (!window_list)
return Py_None;
window_info = python_plugin->get_window_info (python_plugin);
if (!window_info)
return window_list;
for(ptr_window = window_info; ptr_window; ptr_window = ptr_window->next_window)
{
window_list_member = PyDict_New();
if (window_list_member)
{
PyDict_SetItem(window_list_member, Py_BuildValue("s", "num_buffer"),
Py_BuildValue("i", ptr_window->num_buffer));
PyDict_SetItem(window_list_member, Py_BuildValue("s", "win_x"),
Py_BuildValue("i", ptr_window->win_x));
PyDict_SetItem(window_list_member, Py_BuildValue("s", "win_y"),
Py_BuildValue("i", ptr_window->win_y));
PyDict_SetItem(window_list_member, Py_BuildValue("s", "win_width"),
Py_BuildValue("i", ptr_window->win_width));
PyDict_SetItem(window_list_member, Py_BuildValue("s", "win_height"),
Py_BuildValue("i", ptr_window->win_height));
PyDict_SetItem(window_list_member, Py_BuildValue("s", "win_width_pct"),
Py_BuildValue("i", ptr_window->win_width_pct));
PyDict_SetItem(window_list_member, Py_BuildValue("s", "win_height_pct"),
Py_BuildValue("i", ptr_window->win_height_pct));
PyList_Append(window_list, window_list_member);
}
}
python_plugin->free_window_info(python_plugin, window_info);
return window_list;
}
/*
* weechat_python_get_buffer_info: get infos about buffers
*/
static PyObject *
weechat_python_get_buffer_info (PyObject *self, PyObject *args)
{
t_plugin_buffer_info *buffer_info, *ptr_buffer;
PyObject *buffer_hash, *buffer_hash_member;
/* make gcc happy */
(void) self;
(void) args;
if (!python_current_script)
{
python_plugin->print_server (python_plugin,
"Python error: unable to get buffer info, "
"script not initialized");
return Py_None;
}
buffer_hash = PyDict_New ();
if (!buffer_hash)
return Py_None;
buffer_info = python_plugin->get_buffer_info (python_plugin);
if (!buffer_info)
return buffer_hash;
for(ptr_buffer = buffer_info; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer)
{
buffer_hash_member = PyDict_New();
if (buffer_hash_member)
{
PyDict_SetItem(buffer_hash_member, Py_BuildValue("s", "type"),
Py_BuildValue("i", ptr_buffer->type));
PyDict_SetItem(buffer_hash_member, Py_BuildValue("s", "num_displayed"),
Py_BuildValue("i", ptr_buffer->num_displayed));
PyDict_SetItem(buffer_hash_member, Py_BuildValue("s", "server"),
Py_BuildValue("s", ptr_buffer->server_name == NULL ? "" : ptr_buffer->server_name));
PyDict_SetItem(buffer_hash_member, Py_BuildValue("s", "channel"),
Py_BuildValue("s", ptr_buffer->channel_name == NULL ? "" : ptr_buffer->channel_name));
PyDict_SetItem(buffer_hash_member, Py_BuildValue("s", "notify_level"),
Py_BuildValue("i", ptr_buffer->notify_level));
PyDict_SetItem(buffer_hash_member, Py_BuildValue("s", "log_filename"),
Py_BuildValue("s", ptr_buffer->log_filename == NULL ? "" : ptr_buffer->log_filename));
PyDict_SetItem(buffer_hash,
Py_BuildValue("i", ptr_buffer->number), buffer_hash_member);
}
}
python_plugin->free_buffer_info(python_plugin, buffer_info);
return buffer_hash;
}
/*
* weechat_python_get_buffer_data: get buffer content
*/
static PyObject *
weechat_python_get_buffer_data (PyObject *self, PyObject *args)
{
t_plugin_buffer_line *buffer_data, *ptr_data;
PyObject *data_list, *data_list_member;
char *server, *channel;
/* make gcc happy */
(void) self;
(void) args;
if (!python_current_script)
{
python_plugin->print_server (python_plugin,
"Python error: unable to get buffer data, "
"script not initialized");
return Py_None;
}
if (!PyArg_ParseTuple (args, "|ss", &server, &channel))
{
python_plugin->print_server (python_plugin,
"Python error: wrong parameters for "
"\"get_buffer_data\" function");
return Py_None;
}
data_list = PyList_New (0);
if (!data_list)
return Py_None;
buffer_data = python_plugin->get_buffer_data (python_plugin, server, channel);
if (!buffer_data)
return data_list;
for(ptr_data = buffer_data; ptr_data; ptr_data = ptr_data->next_line)
{
data_list_member= PyDict_New();
if (data_list_member)
{
PyDict_SetItem(data_list_member, Py_BuildValue("s", "nick"),
Py_BuildValue("s", ptr_data->nick == NULL ? "" : ptr_data->nick));
PyDict_SetItem(data_list_member, Py_BuildValue("s", "data"),
Py_BuildValue("s", ptr_data->data == NULL ? "" : ptr_data->data));
PyList_Append(data_list, data_list_member);
}
}
python_plugin->free_buffer_data (python_plugin, buffer_data);
return data_list;
}
/*
* Python subroutines
*/
@@ -1298,6 +1498,7 @@ static
PyMethodDef weechat_python_funcs[] = {
{ "register", weechat_python_register, METH_VARARGS, "" },
{ "prnt", weechat_python_print, METH_VARARGS, "" },
{ "print_server", weechat_python_print_server, METH_VARARGS, "" },
{ "print_infobar", weechat_python_print_infobar, METH_VARARGS, "" },
{ "remove_infobar", weechat_python_remove_infobar, METH_VARARGS, "" },
{ "log", weechat_python_log, METH_VARARGS, "" },
@@ -1319,6 +1520,9 @@ PyMethodDef weechat_python_funcs[] = {
{ "get_channel_info", weechat_python_get_channel_info, METH_VARARGS, "" },
{ "get_nick_info", weechat_python_get_nick_info, METH_VARARGS, "" },
{ "get_irc_color", weechat_python_get_irc_color, METH_VARARGS, "" },
{ "get_window_info", weechat_python_get_window_info, METH_VARARGS, "" },
{ "get_buffer_info", weechat_python_get_buffer_info, METH_VARARGS, "" },
{ "get_buffer_data", weechat_python_get_buffer_data, METH_VARARGS, "" },
{ NULL, NULL, 0, NULL }
};