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

buflist: add infolist "buflist" (issue #1375)

This commit is contained in:
Simmo Saan
2019-07-11 07:20:09 +02:00
committed by Sébastien Helleu
parent fd592c2323
commit 0fdf2c13a5
8 changed files with 148 additions and 0 deletions
+1
View File
@@ -236,6 +236,7 @@ WeeChat "core" is located in following directories:
|       buflist-bar-item.c | Buflist bar items.
|       buflist-command.c | Buflist commands.
|       buflist-config.c | Buflist config options (file buflist.conf).
|       buflist-info.c | Buflist info/infolists/hdata.
|       buflist-mouse.c | Buflist mouse actions.
|    charset/ | Charset plugin.
|       charset.c | Charset functions.
+1
View File
@@ -238,6 +238,7 @@ Le cœur de WeeChat est situé dans les répertoires suivants :
|       buflist-bar-item.c | Objets de barre Buflist.
|       buflist-command.c | Commandes pour Buflist.
|       buflist-config.c | Options de configuration pour Buflist (fichier buflist.conf).
|       buflist-info.c | Info/infolists/hdata pour Buflist.
|       buflist-mouse.c | Actions souris pour Buflist.
|    charset/ | Extension Charset.
|       charset.c | Fonctions pour Charset.
+1
View File
@@ -242,6 +242,7 @@ WeeChat "core" は以下のディレクトリに配置されています:
|       buflist-bar-item.c | buflist バー要素
|       buflist-command.c | buflist コマンド
|       buflist-config.c | buflist 設定オプション (buflist.conf ファイル)
|       buflist-info.c | buflist の情報/インフォリスト/hdata
|       buflist-mouse.c | buflist マウス動作
|    charset/ | charset プラグイン
|       charset.c | charset 関数
+1
View File
@@ -22,6 +22,7 @@ buflist.c buflist.h
buflist-bar-item.c buflist-bar-item.h
buflist-command.c buflist-command.h
buflist-config.c buflist-config.h
buflist-info.c buflist-info.h
buflist-mouse.c buflist-mouse.h)
set_target_properties(buflist PROPERTIES PREFIX "")
+2
View File
@@ -31,6 +31,8 @@ buflist_la_SOURCES = buflist.c \
buflist-command.h \
buflist-config.c \
buflist-config.h \
buflist-info.c \
buflist-info.h \
buflist-mouse.c \
buflist-mouse.h
+114
View File
@@ -0,0 +1,114 @@
/*
* buflist-info.c - infolist hook for buflist plugin
*
* Copyright (C) 2019 Simmo Saan <simmo.saan@gmail.com>
*
* This file is part of WeeChat, the extensible chat client.
*
* WeeChat is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* WeeChat is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
*/
#include "../weechat-plugin.h"
#include "buflist.h"
#include "buflist-bar-item.h"
/*
* Adds a buffer in an infolist.
*
* Returns:
* 1: OK
* 0: error
*/
int
buflist_buffer_add_to_infolist (struct t_infolist *infolist, struct t_gui_buffer *buffer)
{
struct t_infolist_item *ptr_item;
if (!infolist || !buffer)
return 0;
ptr_item = weechat_infolist_new_item (infolist);
if (!ptr_item)
return 0;
if (!weechat_infolist_new_var_pointer (ptr_item, "buffer", buffer))
return 0;
return 1;
}
/*
* Returns infolist "buflist".
*/
struct t_infolist *
buflist_info_infolist_buflist_cb (const void *pointer, void *data,
const char *infolist_name,
void *obj_pointer, const char *arguments)
{
int item_index, i, size;
struct t_infolist *ptr_infolist;
struct t_gui_buffer *ptr_buffer;
/* make C compiler happy */
(void) pointer;
(void) data;
(void) infolist_name;
(void) obj_pointer;
if (arguments && arguments[0])
{
item_index = buflist_bar_item_get_index (arguments);
if (item_index < 0)
return NULL;
}
else
item_index = 0;
if (!buflist_list_buffers[item_index])
return NULL;
ptr_infolist = weechat_infolist_new ();
if (!ptr_infolist)
return NULL;
/* build list with all buffers in buflist */
size = weechat_arraylist_size (buflist_list_buffers[item_index]);
for (i = 0; i < size; i++)
{
ptr_buffer = weechat_arraylist_get (buflist_list_buffers[item_index], i);
if (!buflist_buffer_add_to_infolist (ptr_infolist, ptr_buffer))
{
weechat_infolist_free (ptr_infolist);
return NULL;
}
}
return ptr_infolist;
}
/*
* Hooks infolist for buflist plugin.
*/
void
buflist_info_init ()
{
weechat_hook_infolist (
"buflist", N_("list of buffers in a buflist"),
NULL,
N_("buflist item name (optional)"),
&buflist_info_infolist_buflist_cb, NULL, NULL);
}
+25
View File
@@ -0,0 +1,25 @@
/*
* Copyright (C) 2019 Simmo Saan <simmo.saan@gmail.com>
*
* This file is part of WeeChat, the extensible chat client.
*
* WeeChat is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* WeeChat is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
*/
#ifndef WEECHAT_PLUGIN_BUFLIST_INFO_H
#define WEECHAT_PLUGIN_BUFLIST_INFO_H
extern void buflist_info_init ();
#endif /* WEECHAT_PLUGIN_BUFLIST_INFO_H */
+3
View File
@@ -29,6 +29,7 @@
#include "buflist-bar-item.h"
#include "buflist-command.h"
#include "buflist-config.h"
#include "buflist-info.h"
#include "buflist-mouse.h"
@@ -506,6 +507,8 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
weechat_hook_signal ("perl_script_loaded",
&buflist_script_loaded_cb, NULL, NULL);
buflist_info_init ();
return WEECHAT_RC_OK;
}