plugins/gestures/gestures.c

branch
gaim
changeset 20470
77693555855f
parent 13071
b98e72d4089a
parent 20469
b2836a24d81e
child 20471
1966704b3e42
--- a/plugins/gestures/gestures.c	Mon Apr 16 00:43:53 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,326 +0,0 @@
-/*
- * Mouse gestures plugin for Gaim
- *
- * Copyright (C) 2003 Christian Hammond.
- *
- * 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 2 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
- */
-#include "internal.h"
-#include "gtkgaim.h"
-
-#include "debug.h"
-#include "prefs.h"
-#include "signals.h"
-#include "version.h"
-
-#include "gtkconv.h"
-#include "gtkplugin.h"
-#include "gtkutils.h"
-
-#include "gstroke.h"
-
-#define GESTURES_PLUGIN_ID "gtk-x11-gestures"
-
-static void
-stroke_close(GtkWidget *widget, void *data)
-{
-	GaimConversation *conv;
-	GaimGtkConversation *gtkconv;
-
-	conv = (GaimConversation *)data;
-
-	/* Double-check */
-	if (!GAIM_IS_GTK_CONVERSATION(conv))
-		return;
-
-	gtkconv = GAIM_GTK_CONVERSATION(conv);
-
-	gstroke_cleanup(gtkconv->imhtml);
-	gaim_conversation_destroy(conv);
-}
-
-static void
-switch_page(GaimGtkWindow *win, GtkDirectionType dir)
-{
-	int count, current;
-
-#if GTK_CHECK_VERSION(2,2,0)
-	count = gtk_notebook_get_n_pages(GTK_NOTEBOOK(win->notebook));
-#else
-	count = g_list_length(GTK_NOTEBOOK(win->notebook)->children);
-#endif
-	current = gtk_notebook_get_current_page(GTK_NOTEBOOK(win->notebook));
-
-	if (dir == GTK_DIR_LEFT)
-	{
-		gtk_notebook_set_current_page(GTK_NOTEBOOK(win->notebook), current - 1);
-	}
-	else if (dir == GTK_DIR_RIGHT)
-	{
-		if (current == count - 1)
-			gtk_notebook_set_current_page(GTK_NOTEBOOK(win->notebook), 0);
-		else
-			gtk_notebook_set_current_page(GTK_NOTEBOOK(win->notebook), current + 1);
-	}
-}
-
-static void
-stroke_prev_tab(GtkWidget *widget, void *data)
-{
-	GaimConversation *conv;
-	GaimGtkConversation *gtkconv;
-	GaimGtkWindow *win;
-
-	conv  = (GaimConversation *)data;
-	gtkconv = GAIM_GTK_CONVERSATION(conv);
-	win   = gtkconv->win;
-
-	switch_page(win, GTK_DIR_LEFT);
-}
-
-static void
-stroke_next_tab(GtkWidget *widget, void *data)
-{
-	GaimConversation *conv;
-	GaimGtkWindow *win;
-
-	conv  = (GaimConversation *)data;
-	win   = GAIM_GTK_CONVERSATION(conv)->win;
-
-	switch_page(win, GTK_DIR_RIGHT);
-}
-
-static void
-stroke_new_win(GtkWidget *widget, void *data)
-{
-	GaimGtkWindow *new_win, *old_win;
-	GaimConversation *conv;
-
-	conv    = (GaimConversation *)data;
-	old_win = GAIM_GTK_CONVERSATION(conv)->win;
-
-	if (gaim_gtk_conv_window_get_gtkconv_count(old_win) <= 1)
-		return;
-
-	new_win = gaim_gtk_conv_window_new();
-
-	gaim_gtk_conv_window_remove_gtkconv(old_win, GAIM_GTK_CONVERSATION(conv));
-	gaim_gtk_conv_window_add_gtkconv(new_win, GAIM_GTK_CONVERSATION(conv));
-
-	gaim_gtk_conv_window_show(new_win);
-}
-
-static void
-attach_signals(GaimConversation *conv)
-{
-	GaimGtkConversation *gtkconv;
-
-	gtkconv = GAIM_GTK_CONVERSATION(conv);
-
-	gstroke_enable(gtkconv->imhtml);
-	gstroke_signal_connect(gtkconv->imhtml, "14789",  stroke_close,    conv);
-	gstroke_signal_connect(gtkconv->imhtml, "1456",   stroke_close,    conv);
-	gstroke_signal_connect(gtkconv->imhtml, "1489",   stroke_close,    conv);
-	gstroke_signal_connect(gtkconv->imhtml, "74123",  stroke_next_tab, conv);
-	gstroke_signal_connect(gtkconv->imhtml, "7456",   stroke_next_tab, conv);
-	gstroke_signal_connect(gtkconv->imhtml, "96321",  stroke_prev_tab, conv);
-	gstroke_signal_connect(gtkconv->imhtml, "9654",   stroke_prev_tab, conv);
-	gstroke_signal_connect(gtkconv->imhtml, "25852",  stroke_new_win,  conv);
-}
-
-static void
-new_conv_cb(GaimConversation *conv)
-{
-	if (GAIM_IS_GTK_CONVERSATION(conv))
-		attach_signals(conv);
-}
-
-#if 0
-static void
-mouse_button_menu_cb(GtkMenuItem *item, gpointer data)
-{
-	int button = (int)data;
-
-	gstroke_set_mouse_button(button + 2);
-}
-#endif
-
-static void
-toggle_draw_cb(GtkToggleButton *toggle, gpointer data)
-{
-	gaim_prefs_set_bool("/plugins/gtk/X11/gestures/visual",
-		gtk_toggle_button_get_active(toggle));
-}
-
-static void
-visual_pref_cb(const char *name, GaimPrefType type, gconstpointer value,
-			   gpointer data)
-{
-	gstroke_set_draw_strokes((gboolean) GPOINTER_TO_INT(value) );
-}
-
-static gboolean
-plugin_load(GaimPlugin *plugin)
-{
-	GaimConversation *conv;
-	GList *l;
-
-	for (l = gaim_get_conversations(); l != NULL; l = l->next) {
-		conv = (GaimConversation *)l->data;
-
-		if (!GAIM_IS_GTK_CONVERSATION(conv))
-			continue;
-
-		attach_signals(conv);
-	}
-
-	gaim_signal_connect(gaim_conversations_get_handle(),
-						"conversation-created",
-						plugin, GAIM_CALLBACK(new_conv_cb), NULL);
-
-	return TRUE;
-}
-
-static gboolean
-plugin_unload(GaimPlugin *plugin)
-{
-	GaimConversation *conv;
-	GaimGtkConversation *gtkconv;
-	GList *l;
-
-	for (l = gaim_get_conversations(); l != NULL; l = l->next) {
-		conv = (GaimConversation *)l->data;
-
-		if (!GAIM_IS_GTK_CONVERSATION(conv))
-			continue;
-
-		gtkconv = GAIM_GTK_CONVERSATION(conv);
-
-		gstroke_cleanup(gtkconv->imhtml);
-		gstroke_disable(gtkconv->imhtml);
-	}
-
-	return TRUE;
-}
-
-static GtkWidget *
-get_config_frame(GaimPlugin *plugin)
-{
-	GtkWidget *ret;
-	GtkWidget *vbox;
-	GtkWidget *toggle;
-#if 0
-	GtkWidget *opt;
-	GtkWidget *menu, *item;
-#endif
-
-	/* Outside container */
-	ret = gtk_vbox_new(FALSE, 18);
-	gtk_container_set_border_width(GTK_CONTAINER(ret), 12);
-
-	/* Configuration frame */
-	vbox = gaim_gtk_make_frame(ret, _("Mouse Gestures Configuration"));
-
-#if 0
-	/* Mouse button drop-down menu */
-	menu = gtk_menu_new();
-	opt = gtk_option_menu_new();
-
-	item = gtk_menu_item_new_with_label(_("Middle mouse button"));
-	g_signal_connect(G_OBJECT(item), "activate",
-					 G_CALLBACK(mouse_button_menu_cb), opt);
-	gtk_menu_append(menu, item);
-
-	item = gtk_menu_item_new_with_label(_("Right mouse button"));
-	g_signal_connect(G_OBJECT(item), "activate",
-					 G_CALLBACK(mouse_button_menu_cb), opt);
-	gtk_menu_append(menu, item);
-
-	gtk_box_pack_start(GTK_BOX(vbox), opt, FALSE, FALSE, 0);
-	gtk_option_menu_set_menu(GTK_OPTION_MENU(opt), menu);
-	gtk_option_menu_set_history(GTK_OPTION_MENU(opt),
-								gstroke_get_mouse_button() - 2);
-#endif
-
-	/* "Visual gesture display" checkbox */
-	toggle = gtk_check_button_new_with_mnemonic(_("_Visual gesture display"));
-	gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),
-			gaim_prefs_get_bool("/plugins/gtk/X11/gestures/visual"));
-	g_signal_connect(G_OBJECT(toggle), "toggled",
-					 G_CALLBACK(toggle_draw_cb), NULL);
-
-	gtk_widget_show_all(ret);
-
-	return ret;
-}
-
-static GaimGtkPluginUiInfo ui_info =
-{
-	get_config_frame,
-	0 /* page_num (Reserved) */
-};
-
-static GaimPluginInfo info =
-{
-	GAIM_PLUGIN_MAGIC,
-	GAIM_MAJOR_VERSION,
-	GAIM_MINOR_VERSION,
-	GAIM_PLUGIN_STANDARD,                             /**< type           */
-	GAIM_GTK_PLUGIN_TYPE,                             /**< ui_requirement */
-	0,                                                /**< flags          */
-	NULL,                                             /**< dependencies   */
-	GAIM_PRIORITY_DEFAULT,                            /**< priority       */
-
-	GESTURES_PLUGIN_ID,                               /**< id             */
-	N_("Mouse Gestures"),                             /**< name           */
-	VERSION,                                          /**< version        */
-	                                                  /**  summary        */
-	N_("Provides support for mouse gestures"),
-	                                                  /**  description    */
-	N_("Allows support for mouse gestures in conversation windows.\n"
-	   "Drag the middle mouse button to perform certain actions:\n\n"
-	   "Drag down and then to the right to close a conversation.\n"
-	   "Drag up and then to the left to switch to the previous "
-	   "conversation.\n"
-	   "Drag up and then to the right to switch to the next "
-	   "conversation."),
-	"Christian Hammond <chipx86@gnupdate.org>",       /**< author         */
-	GAIM_WEBSITE,                                     /**< homepage       */
-
-	plugin_load,                                      /**< load           */
-	plugin_unload,                                    /**< unload         */
-	NULL,                                             /**< destroy        */
-
-	&ui_info,                                         /**< ui_info        */
-	NULL,                                             /**< extra_info     */
-	NULL,
-	NULL
-};
-
-static void
-init_plugin(GaimPlugin *plugin)
-{
-	gaim_prefs_add_none("/plugins/gtk");
-	gaim_prefs_add_none("/plugins/gtk/X11");
-	gaim_prefs_add_none("/plugins/gtk/X11/gestures");
-	gaim_prefs_add_bool("/plugins/gtk/X11/gestures/visual", FALSE);
-
-	gaim_prefs_connect_callback(plugin, "/plugins/gtk/X11/gestures/visual",
-								visual_pref_cb, NULL);
-}
-
-GAIM_INIT_PLUGIN(gestures, init_plugin, info)

mercurial