diff options
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; +} |