changeset 2495:b46e8a80da4f

[gaim-migrate @ 2508] i don't know why i added irc. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Fri, 12 Oct 2001 22:51:10 +0000
parents 2c1950c5544a
children f0a2a9afdb77
files plugins/raw.c plugins/rawjab.c plugins/toc_commands.c
diffstat 3 files changed, 147 insertions(+), 123 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/raw.c	Fri Oct 12 22:51:10 2001 +0000
@@ -0,0 +1,147 @@
+#define GAIM_PLUGINS
+#include "gaim.h"
+#include "prpl.h"
+#ifdef MAX
+#undef MAX
+#undef MIN
+#endif
+#include "jabber/jabber.h"
+
+static GtkWidget *window = NULL;
+static GtkWidget *optmenu = NULL;
+static struct gaim_connection *gc = NULL;
+static GModule *me = NULL;
+
+/* this is an evil hack.
+ * gc->proto_data for Jabber connections can be cast to a jconn *.
+ * gc->proto_data for MSN, TOC, and IRC connections can be cast to an int *.
+ */
+
+char *name()
+{
+	return "Raw";
+}
+
+char *description()
+{
+	return "Lets you send raw XML to Jabber, or raw commands to MSN, IRC, and TOC."
+		" Not very useful except for debugging. Hit 'enter' in the entry to send."
+		" Watch the debug window.";
+}
+
+static int goodbye()
+{
+	gaim_plugin_unload(me);
+	return FALSE;
+}
+
+static void send_it(GtkEntry *entry)
+{
+	char *txt;
+	if (!gc) return;
+	txt = gtk_entry_get_text(entry);
+	switch (gc->protocol) {
+		case PROTO_TOC:
+			{
+				int *a = (int *)gc->proto_data;
+				unsigned short seqno = htons(a[1]++ & 0xffff);
+				unsigned short len = htons(strlen(txt) + 1);
+				write(*a, "*\002", 2);
+				write(*a, &seqno, 2);
+				write(*a, &len, 2);
+				write(*a, txt, ntohs(len));
+				debug_printf("TOC C: %s\n", txt);
+			}
+			break;
+		case PROTO_MSN:
+			write(*(int *)gc->proto_data, txt, strlen(txt));
+			write(*(int *)gc->proto_data, "\r\n", 2);
+			debug_printf("MSN C: %s\n", txt);
+			break;
+		case PROTO_IRC:
+			write(*(int *)gc->proto_data, txt, strlen(txt));
+			write(*(int *)gc->proto_data, "\r\n", 2);
+			debug_printf("IRC C: %s\n", txt);
+			break;
+		case PROTO_JABBER:
+			jab_send_raw(*(jconn *)gc->proto_data, txt);
+			break;
+	}
+	gtk_entry_set_text(entry, "");
+}
+
+static void set_gc(gpointer d, struct gaim_connection *c)
+{
+	gc = c;
+}
+
+static void redo_optmenu(struct gaim_connection *arg, gpointer x)
+{
+	GtkWidget *menu;
+	GSList *g = connections;
+	struct gaim_connection *c;
+
+	menu = gtk_menu_new();
+	gc = NULL;
+
+	while (g) {
+		char buf[256];
+		GtkWidget *opt;
+		c = (struct gaim_connection *)g->data;
+		g = g->next;
+		if (x && c == arg)
+			continue;
+		if (c->protocol != PROTO_TOC && c->protocol != PROTO_MSN &&
+		    c->protocol != PROTO_IRC && c->protocol != PROTO_JABBER)
+			continue;
+		if (!gc)
+			gc = c;
+		g_snprintf(buf, sizeof buf, "%s (%s)", c->username, (*c->prpl->name)());
+		opt = gtk_menu_item_new_with_label(buf);
+		gtk_signal_connect(GTK_OBJECT(opt), "activate", GTK_SIGNAL_FUNC(set_gc), c);
+		gtk_widget_show(opt);
+		gtk_menu_append(GTK_MENU(menu), opt);
+	}
+
+	gtk_option_menu_remove_menu(GTK_OPTION_MENU(optmenu));
+	gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), menu);
+	gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), 0);
+}
+
+char *gaim_plugin_init(GModule *h)
+{
+	GtkWidget *hbox;
+	GtkWidget *entry;
+
+	me = h;
+
+	gaim_signal_connect(h, event_signon, redo_optmenu, NULL);
+	gaim_signal_connect(h, event_signoff, redo_optmenu, me);
+
+	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+	gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(goodbye), NULL);
+
+	hbox = gtk_hbox_new(FALSE, 0);
+	gtk_container_add(GTK_CONTAINER(window), hbox);
+
+	optmenu = gtk_option_menu_new();
+	gtk_box_pack_start(GTK_BOX(hbox), optmenu, FALSE, FALSE, 5);
+
+	redo_optmenu(NULL, NULL);
+
+	entry = gtk_entry_new();
+	gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 5);
+	gtk_signal_connect(GTK_OBJECT(entry), "activate", GTK_SIGNAL_FUNC(send_it), NULL);
+
+	gtk_widget_show_all(window);
+
+	return NULL;
+}
+
+void gaim_plugin_remove()
+{
+	if (window)
+		gtk_widget_destroy(window);
+	window = NULL;
+	me = NULL;
+}
--- a/plugins/rawjab.c	Fri Oct 12 22:31:12 2001 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-#define GAIM_PLUGINS
-#include "gaim.h"
-#include "prpl.h"
-#ifdef MAX
-#undef MAX
-#undef MIN
-#endif
-#include "jabber/jabber.h"
-
-static GtkWidget *window = NULL;
-static GModule *me = NULL;
-
-/* this is an evil hack. gc->proto_data for Jabber connections can be cast to a jconn *. */
-
-char *name()
-{
-	return "RawJab";
-}
-
-char *description()
-{
-	return "Lets you send raw XML to Jabber. Not very useful except for debugging. Hit 'enter'"
-		" in the entry to send. Watch the debug window.";
-}
-
-static int goodbye()
-{
-	gaim_plugin_unload(me);
-	return FALSE;
-}
-
-static void send_it(GtkEntry *entry)
-{
-	char *txt;
-	GSList *c = connections;
-	struct gaim_connection *gc;
-	while (c) {
-		gc = c->data;
-		if (gc->protocol == PROTO_JABBER)
-			break;
-		c = c->next;
-	}
-	if (!c) return;
-	txt = gtk_entry_get_text(entry);
-	jab_send_raw(*(jconn *)gc->proto_data, txt);
-	gtk_entry_set_text(entry, "");
-}
-
-char *gaim_plugin_init(GModule *h)
-{
-	GtkWidget *entry;
-	me = h;
-
-	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-	gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(goodbye), NULL);
-
-	entry = gtk_entry_new();
-	gtk_container_add(GTK_CONTAINER(window), entry);
-	gtk_signal_connect(GTK_OBJECT(entry), "activate", GTK_SIGNAL_FUNC(send_it), NULL);
-
-	gtk_widget_show_all(window);
-
-	return NULL;
-}
-
-void gaim_plugin_remove()
-{
-	if (window)
-		gtk_widget_destroy(window);
-	window = NULL;
-	me = NULL;
-}
--- a/plugins/toc_commands.c	Fri Oct 12 22:31:12 2001 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-#define GAIM_PLUGINS
-#include "gaim.h"
-
-#include <gtk/gtk.h>
-
-void enter_callback(GtkWidget *widget, GtkWidget *entry) {
-	gchar *entry_text;
-	entry_text = gtk_entry_get_text(GTK_ENTRY(entry));
-	/* this is bad, but you really shouldn't be using this plugin */
-	sflap_send(connections->data, entry_text, strlen(entry_text), TYPE_DATA);
-}
-
-void destroy_callback(GtkWidget *widget, void *handle) {
-	gtk_widget_destroy(widget);
-	gaim_plugin_unload(handle);
-}
-
-GtkWidget *window;
-char *gaim_plugin_init(GModule *h) {
-	GtkWidget *entry;
-
-	window = gtk_window_new(GTK_WINDOW_DIALOG);
-	gtk_window_set_title(GTK_WINDOW(window), "Gaim - SFLAP interface");
-
-	entry = gtk_entry_new();
-	gtk_signal_connect(GTK_OBJECT(entry), "activate",
-			   (GtkSignalFunc)enter_callback,
-			   entry);
-	gtk_container_add(GTK_CONTAINER(window), entry);
-	gtk_widget_show(entry);
-
-	gtk_signal_connect(GTK_OBJECT(window), "destroy",
-			   (GtkSignalFunc)destroy_callback,
-			   h);
-
-	gtk_widget_show(window);
-
-	return NULL;
-}
-
-void gaim_plugin_remove() {
-	gtk_widget_destroy(window);
-}
-
-char *name() {
-	return "TOC Interface";
-}
-
-char *description() {
-	return "Allows you to talk directly to the TOC server, bypassing gaim.";
-}