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:
committed by
Sébastien Helleu
parent
fd592c2323
commit
0fdf2c13a5
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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 関数
|
||||
|
||||
@@ -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 "")
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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 */
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user