summaryrefslogtreecommitdiff
path: root/src/fe-text/cuix-lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fe-text/cuix-lib.c')
-rw-r--r--src/fe-text/cuix-lib.c139
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;
+}