From 432ecaa9f47e808a8340a178acc26fdf12f04f4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= Date: Thu, 8 May 2014 14:36:23 +0200 Subject: [PATCH] relay: add message "_buffer_cleared" --- ChangeLog.asciidoc | 3 +- doc/en/weechat_relay_protocol.en.txt | 34 ++++++++++++++++++ doc/fr/weechat_relay_protocol.fr.txt | 34 ++++++++++++++++++ doc/ja/weechat_relay_protocol.ja.txt | 36 +++++++++++++++++++ .../relay/weechat/relay-weechat-protocol.c | 28 +++++++++++++-- 5 files changed, 131 insertions(+), 4 deletions(-) diff --git a/ChangeLog.asciidoc b/ChangeLog.asciidoc index 9fa8166cd..1907a1df9 100644 --- a/ChangeLog.asciidoc +++ b/ChangeLog.asciidoc @@ -129,7 +129,8 @@ http://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes] * python: fix interpreter used after unload of a script * relay: fix client disconnection on empty websocket frames received (PONG) * relay: add support of Internet Explorer websocket (closes #73) -* relay: add messages "_buffer_hidden" and "_buffer_unhidden" +* relay: add messages "_buffer_cleared", "_buffer_hidden" and + "_buffer_unhidden" * relay: fix crash on /upgrade received from a client (weechat protocol) * relay: add info "relay_client_count" with optional status name as argument * relay: add signals "relay_client_xxx" for client status changes (closes #2) diff --git a/doc/en/weechat_relay_protocol.en.txt b/doc/en/weechat_relay_protocol.en.txt index 62e66e22d..3a6876f06 100644 --- a/doc/en/weechat_relay_protocol.en.txt +++ b/doc/en/weechat_relay_protocol.en.txt @@ -539,6 +539,9 @@ WeeChat reserved identifiers: | _buffer_title_changed | buffers / buffer | hdata: buffer | Title of buffer changed | Change title of buffer +| _buffer_cleared | buffer | hdata: buffer | + Buffer cleared | Clear buffer + | _buffer_type_changed | buffer | hdata: buffer | Type of buffer changed | Change type of buffer @@ -850,6 +853,37 @@ hda: title: 'Welcome on #weechat! http://weechat.org/' ---- +[[message_buffer_cleared]] +==== _buffer_cleared + +_WeeChat ≥ 1.0._ + +This message is sent to the client when the signal "buffer_cleared" is sent by +WeeChat. + +Data sent as hdata: + +[width="100%",cols="3m,2,10",options="header"] +|=== +| Name | Type | Description +| number | integer | Buffer number (≥ 1) +| full_name | string | Full name (example: 'irc.freenode.#weechat') +|=== + +Example: buffer 'irc.freenode.#weechat' has been cleared: + +[source,python] +---- +id: '_buffer_cleared' +hda: + keys: {'number': 'int', 'full_name': 'str'} + path: ['buffer'] + item 1: + __path: ['0x4a715d0'] + number: 3 + full_name: 'irc.freenode.#weechat' +---- + [[message_buffer_type_changed]] ==== _buffer_type_changed diff --git a/doc/fr/weechat_relay_protocol.fr.txt b/doc/fr/weechat_relay_protocol.fr.txt index 1930af9c6..856558779 100644 --- a/doc/fr/weechat_relay_protocol.fr.txt +++ b/doc/fr/weechat_relay_protocol.fr.txt @@ -557,6 +557,9 @@ Les identifiants réservés par WeeChat : | _buffer_title_changed | buffers / buffer | hdata : buffer | Titre du tampon changé | Changer le titre du tampon +| _buffer_cleared | buffer | hdata : buffer | + Tampon qui est vidé | Vider le tampon + | _buffer_type_changed | buffer | hdata : buffer | Type de tampon changé | Changer le type de tampon @@ -868,6 +871,37 @@ hda: title: 'Welcome on #weechat! http://weechat.org/' ---- +[[message_buffer_cleared]] +==== _buffer_cleared + +_WeeChat ≥ 1.0._ + +Ce message est envoyé au client lorsque le signal "buffer_cleared" est envoyé +par WeeChat. + +Données envoyées dans le hdata : + +[width="100%",cols="3m,2,10",options="header"] +|=== +| Nom | Type | Description +| number | entier | Numéro de tampon (≥ 1) +| full_name | chaîne | Nom complet (exemple : 'irc.freenode.#weechat') +|=== + +Exemple : tampon 'irc.freenode.#weechat' vidé : + +[source,python] +---- +id: '_buffer_cleared' +hda: + keys: {'number': 'int', 'full_name': 'str'} + path: ['buffer'] + item 1: + __path: ['0x4a715d0'] + number: 3 + full_name: 'irc.freenode.#weechat' +---- + [[message_buffer_type_changed]] ==== _buffer_type_changed diff --git a/doc/ja/weechat_relay_protocol.ja.txt b/doc/ja/weechat_relay_protocol.ja.txt index 271dda122..ddbe7cb1e 100644 --- a/doc/ja/weechat_relay_protocol.ja.txt +++ b/doc/ja/weechat_relay_protocol.ja.txt @@ -540,6 +540,10 @@ WeeChat の予約識別子: | _buffer_title_changed | buffers / buffer | hdata: buffer | バッファのタイトル変更 | バッファのタイトルを変更 +// TRANSLATION MISSING +| _buffer_cleared | buffer | hdata: buffer | + Buffer cleared | Clear buffer + | _buffer_type_changed | buffer | hdata: buffer | バッファの種類変更 | バッファの種類を変更 @@ -851,6 +855,38 @@ hda: title: 'Welcome on #weechat! http://weechat.org/' ---- +[[message_buffer_cleared]] +==== _buffer_cleared + +_WeeChat バージョン 1.0 以上で利用可。_ + +このメッセージは WeeChat が "buffer_cleared" +シグナルを送信する際にクライアントに送られます。 + +hdata として送られるデータ: + +[width="100%",cols="3m,2,10",options="header"] +|=== +| 名前 | 型 | 説明 +| number | integer | バッファ番号 (≥ 1) +| full_name | string | 完全な名前 (例: 'irc.freenode.#weechat') +|=== + +// TRANSLATION MISSING +Example: buffer 'irc.freenode.#weechat' has been cleared: + +[source,python] +---- +id: '_buffer_cleared' +hda: + keys: {'number': 'int', 'full_name': 'str'} + path: ['buffer'] + item 1: + __path: ['0x4a715d0'] + number: 3 + full_name: 'irc.freenode.#weechat' +---- + [[message_buffer_type_changed]] ==== _buffer_type_changed diff --git a/src/plugins/relay/weechat/relay-weechat-protocol.c b/src/plugins/relay/weechat/relay-weechat-protocol.c index b1fbb1b7f..d95747179 100644 --- a/src/plugins/relay/weechat/relay-weechat-protocol.c +++ b/src/plugins/relay/weechat/relay-weechat-protocol.c @@ -462,7 +462,7 @@ relay_weechat_protocol_signal_buffer_cb (void *data, const char *signal, if (!ptr_buffer) return WEECHAT_RC_OK; - /* send signal only if buffer is synchronized with flag "buffer" */ + /* send signal only if sync with flag "buffer" */ if (relay_weechat_protocol_is_sync (ptr_client, ptr_buffer, RELAY_WEECHAT_PROTOCOL_SYNC_BUFFER)) { @@ -599,13 +599,35 @@ relay_weechat_protocol_signal_buffer_cb (void *data, const char *signal, } } } + else if (strcmp (signal, "buffer_cleared") == 0) + { + ptr_buffer = (struct t_gui_buffer *)signal_data; + if (!ptr_buffer) + return WEECHAT_RC_OK; + + /* send signal only if sync with flag "buffer" */ + if (relay_weechat_protocol_is_sync (ptr_client, ptr_buffer, + RELAY_WEECHAT_PROTOCOL_SYNC_BUFFER)) + { + msg = relay_weechat_msg_new (str_signal); + if (msg) + { + snprintf (cmd_hdata, sizeof (cmd_hdata), + "buffer:0x%lx", (long unsigned int)ptr_buffer); + relay_weechat_msg_add_hdata (msg, cmd_hdata, + "number,full_name"); + relay_weechat_msg_send (ptr_client, msg); + relay_weechat_msg_free (msg); + } + } + } else if (strncmp (signal, "buffer_localvar_", 16) == 0) { ptr_buffer = (struct t_gui_buffer *)signal_data; if (!ptr_buffer) return WEECHAT_RC_OK; - /* send signal only if buffer is synchronized with flag "buffer" */ + /* send signal only if sync with flag "buffer" */ if (relay_weechat_protocol_is_sync (ptr_client, ptr_buffer, RELAY_WEECHAT_PROTOCOL_SYNC_BUFFER)) { @@ -644,7 +666,7 @@ relay_weechat_protocol_signal_buffer_cb (void *data, const char *signal, if (!ptr_buffer || (relay_raw_buffer && (ptr_buffer == relay_raw_buffer))) return WEECHAT_RC_OK; - /* send line only if buffer is synchronized with flag "buffer" */ + /* send signal only if sync with flag "buffer" */ if (relay_weechat_protocol_is_sync (ptr_client, ptr_buffer, RELAY_WEECHAT_PROTOCOL_SYNC_BUFFER)) {