From 6353236f1e13aa522325f742d64da5fa7067ec44 Mon Sep 17 00:00:00 2001 From: NeodarZ Date: Tue, 28 Feb 2017 14:12:19 +0100 Subject: Add my fucking weechat theme --- weechat/python/queryman.py | 130 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 weechat/python/queryman.py (limited to 'weechat/python/queryman.py') diff --git a/weechat/python/queryman.py b/weechat/python/queryman.py new file mode 100644 index 0000000..c979f93 --- /dev/null +++ b/weechat/python/queryman.py @@ -0,0 +1,130 @@ +# -*- coding: utf-8 -*- +# +# Copyright (c) 2013-2016 by nils_2 +# +# save and restore query buffers after /quit +# +# This program 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. +# +# This program 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 this program. If not, see . +# +# idea by lasers@freenode.#weechat +# +# 2016-02-27: nils_2, (freenode.#weechat) +# 0.3 : make script consistent with "buffer_switch_autojoin" option (idea haasn) +# +# 2013-11-07: nils_2, (freenode.#weechat) +# 0.2 : fix file not found error (reported by calcifea) +# : make script compatible with Python 3.x +# +# 2013-07-26: nils_2, (freenode.#weechat) +# 0.1 : initial release +# +# script will create a config file (~./weechat/queryman.txt) +# format: "servername nickname" (without "") +# +# Development is currently hosted at +# https://github.com/weechatter/weechat-scripts + +try: + import weechat,re,os + +except Exception: + print("This script must be run under WeeChat.") + print("Get WeeChat now at: http://www.weechat.org/") + quit() + +SCRIPT_NAME = 'queryman' +SCRIPT_AUTHOR = 'nils_2 ' +SCRIPT_VERSION = '0.3' +SCRIPT_LICENSE = 'GPL' +SCRIPT_DESC = 'save and restore query buffers after /quit' + +query_buffer_list = [] +queryman_filename = 'queryman.txt' + +# ================================[ callback ]=============================== +def quit_signal_cb(data, signal, signal_data): + save_query_buffer_to_file() + return weechat.WEECHAT_RC_OK + +# signal_data contains servername +def irc_server_connected_signal_cb(data, signal, signal_data): + load_query_buffer_irc_server_opened(signal_data) + return weechat.WEECHAT_RC_OK + +# ================================[ file ]=============================== +def get_filename_with_path(): + global queryman_filename + path = weechat.info_get("weechat_dir", "") + return os.path.join(path,queryman_filename) + +def load_query_buffer_irc_server_opened(server_connected): + global query_buffer_list + + filename = get_filename_with_path() + + if os.path.isfile(filename): + f = open(filename, 'rb') + for line in f: + servername,nick = line.split(' ') + if servername == server_connected: + noswitch = "" + switch_autojoin = weechat.config_get("irc.look.buffer_switch_autojoin") + if not weechat.config_boolean(switch_autojoin): + noswitch = "-noswitch" + weechat.command('','/query %s -server %s %s' % ( noswitch, servername, nick )) + f.close() + else: + weechat.prnt('','%s%s: Error loading query buffer from "%s"' % (weechat.prefix('error'), SCRIPT_NAME, filename)) + +def save_query_buffer_to_file(): + global query_buffer_list + + ptr_infolist_buffer = weechat.infolist_get('buffer', '', '') + + while weechat.infolist_next(ptr_infolist_buffer): + ptr_buffer = weechat.infolist_pointer(ptr_infolist_buffer,'pointer') + + type = weechat.buffer_get_string(ptr_buffer, 'localvar_type') + if type == 'private': + server = weechat.buffer_get_string(ptr_buffer, 'localvar_server') + channel = weechat.buffer_get_string(ptr_buffer, 'localvar_channel') + query_buffer_list.insert(0,"%s %s" % (server,channel)) + + weechat.infolist_free(ptr_infolist_buffer) + + filename = get_filename_with_path() + + if len(query_buffer_list): + try: + f = open(filename, 'w') + i = 0 + while i < len(query_buffer_list): + f.write('%s\n' % query_buffer_list[i]) + i = i + 1 + f.close() + except: + weechat.prnt('','%s%s: Error writing query buffer to "%s"' % (weechat.prefix('error'), SCRIPT_NAME, filename)) + raise + else: # no query buffer(s). remove file + if os.path.isfile(filename): + os.remove(filename) + return + +# ================================[ main ]=============================== +if __name__ == '__main__': + if weechat.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, SCRIPT_LICENSE, SCRIPT_DESC, '', ''): + version = weechat.info_get('version_number', '') or 0 + if int(version) >= 0x00030700: + weechat.hook_signal('quit', 'quit_signal_cb', '') + weechat.hook_signal('irc_server_connected', 'irc_server_connected_signal_cb', '') -- cgit v1.2.1