view finch/libgnt/test/keys.c @ 28914:e14402d6c5e0

jabber: Go back to not overwriting avatars if there is not one locally set. This isn't quite right yet, because we need to pick up the hash and advertise it in our presence. Fixes #10287.
author Paul Aurich <paul@darkrain42.org>
date Fri, 13 Nov 2009 18:39:23 +0000
parents 0e3a8505ebbe
children
line wrap: on
line source

#include <gnt.h>
#include <gntbox.h>
#include <gntentry.h>
#include <gntlabel.h>

static gboolean
print_keycode(GntEntry *entry, const char *text, gpointer null)
{
	char *s = g_strdup_printf("%s ", text);
	gnt_entry_set_text(entry, s);
	g_free(s);
	if (text[0] == 27)
	{
		if (strncmp(text + 1, "[M ", 3) == 0)
		{
			int x = (unsigned)text[4];
			int y = (unsigned)text[5];
			if (x < 0)	x += 256;
			if (y < 0)	y += 256;
			x -= 33;
			y -= 33;
			s = g_strdup_printf("ldown %d %d", x, y);
			gnt_entry_set_text(entry, s);
			g_free(s);
		}
		else if (strncmp(text + 1, "[M#", 3) == 0)
			gnt_entry_set_text(entry, "up");
		else
			return FALSE;
		return TRUE;
	}
	else
		return TRUE;
}

int main()
{
	GntWidget *window, *entry;

	gnt_init();

	freopen(".error", "w", stderr);

	window = gnt_hbox_new(FALSE);
	gnt_box_set_toplevel(GNT_BOX(window), TRUE);

	gnt_box_add_widget(GNT_BOX(window), gnt_label_new("Press any key: "));

	entry = gnt_entry_new(NULL);
	gnt_box_add_widget(GNT_BOX(window), entry);
	g_signal_connect(G_OBJECT(entry), "key_pressed", G_CALLBACK(print_keycode), NULL);

	gnt_widget_set_position(window, getmaxx(stdscr) / 2 - 12, getmaxy(stdscr) / 2 - 3);
	gnt_widget_show(window);

	gnt_main();
	gnt_quit();
	return 0;
}