diff options
author | nattfodd <nattfodd@dbcabf3a-b0e7-0310-adc4-f8d773084564> | 2006-08-08 21:11:20 +0000 |
---|---|---|
committer | nattfodd <nattfodd@dbcabf3a-b0e7-0310-adc4-f8d773084564> | 2006-08-08 21:11:20 +0000 |
commit | 8b75299729034bd130e06462ebac49158bf58160 (patch) | |
tree | ffb7f377f1af402923dd2202536d19605c3af4e0 /src/fe-text/cuix-lib.c | |
parent | bd3a137c814561bd1a110d1c020350b7de4d10fd (diff) | |
download | irssi-8b75299729034bd130e06462ebac49158bf58160.zip |
Merge of cuix back in trunk
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4309 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'src/fe-text/cuix-lib.c')
-rw-r--r-- | src/fe-text/cuix-lib.c | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/src/fe-text/cuix-lib.c b/src/fe-text/cuix-lib.c new file mode 100644 index 00000000..25d6a2f1 --- /dev/null +++ b/src/fe-text/cuix-lib.c @@ -0,0 +1,139 @@ +#include "module.h" +#include "settings.h" +#include "cuix-lib.h" +#include "signals.h" +#include "irc.h" +#include "irc-channels.h" +#include "mode-lists.h" +#include "gui-windows.h" + + +int do_nothing (char *foo) +{ + (void)foo; + return 0; +} + + +void display_message (char *message) +{ + object *list; + entry *text, *entries[2]; + + text = create_label (message); + entries[0] = text; + entries[1] = NULL; + list = create_list ("Message", entries); + display_object (list); +} + + +int change_nick (char *nick) +{ + SERVER_REC *server; + WI_ITEM_REC *wiitem; + if (active_win == NULL) { + server = NULL; + wiitem = NULL; + } else { + server = active_win->active_server != NULL ? + active_win->active_server : active_win->connect_server; + wiitem = active_win->active; + } + signal_emit("command nick", 3, nick, server, wiitem); + return 0; +} + + + +int show_banlist (char *nothing) +{ + GSList *tmp; + IRC_CHANNEL_REC *chan = IRC_CHANNEL(active_win->active); + BAN_REC *ban; + object *list; + entry *entry, **entries; + unsigned int size, i; + GString **baninfo; + + if (!chan) { + display_message ("This is not a channel"); + return 1; + } + if (!chan->banlist) { + display_message ("No bans set"); + return 0; + } + + size = (unsigned int) g_slist_length (chan->banlist); + entries = g_new0 (struct entry *, size + 1); + baninfo = g_new0 (GString *, size); + + for (tmp = chan->banlist, i = 0; tmp; tmp = tmp->next, i++) { + ban = tmp->data; + baninfo[i] = g_string_new (NULL); + g_string_printf (baninfo[i], "%s set by %s %d seconds ago", ban->ban, ban->setby, (int)(time(NULL)-ban->time)); + entry = create_label (baninfo[i]->str); + entries[i] = entry; + } + + list = create_list ("Bans", entries); + display_object (list); + for (i = 0; i < size; i++) { + g_string_free (baninfo[i], FALSE); + } + g_free (entries); + g_free (baninfo); + + return 0; +} + + +int change_nick_form (char *nothing) { + object *form; + entry *question, *answer; + (void)nothing; + + form = create_form ("True!"); + question = create_label ("Enter your new nick"); + answer = create_field ("", change_nick); + attach_entry (form, question); + attach_entry (form, answer); + display_object (form); + return 0; +} + + +int about_list (char *nothing) +{ + (void)nothing; + + display_message ("(c) irssi; See http://www.irssi.org."); + return 0; +} + + + + +int home_menu (char *nothing) +{ + /* Objects declaration */ + object *root_menu; + entry *about, *banlist, *nick; + (void)nothing; + + /* Objects initialisation */ + root_menu = create_menu ("My root menu"); + banlist = create_menuentry ("Banlist", show_banlist); + nick = create_menuentry ("Change nick", change_nick_form); + about = create_menuentry ("About", about_list); + + /* Layout */ + attach_entry (root_menu, (void *)banlist); + attach_entry (root_menu, (void *)nick); + attach_entry (root_menu, (void *)about); + + /* Declare that the object is ready to be displayed and do it */ + display_object (root_menu); + return 0; +} |