annotate console/libgnt/test/keys.c @ 14793:8a0cfee11af8

[gaim-migrate @ 17558] Introduce actions. You can specify the bindings for the actions. Right now, only the tree and the entry widget have them. The manual includes the details. I believe Ethan had suggested something like this a while back. It made sense, so here it is. committer: Tailor Script <tailor@pidgin.im>
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Sat, 21 Oct 2006 21:08:24 +0000
parents a766441af5ea
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14200
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1 #include <gnt.h>
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
2 #include <gntbox.h>
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
3 #include <gntentry.h>
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
4 #include <gntlabel.h>
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
5
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
6 static gboolean
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
7 print_keycode(GntEntry *entry, const char *text, gpointer null)
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
8 {
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
9 char *s = g_strdup_printf("%s ", text);
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
10 gnt_entry_set_text(entry, s);
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
11 g_free(s);
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
12 if (text[0] == 27)
14310
a766441af5ea [gaim-migrate @ 17000]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14200
diff changeset
13 {
a766441af5ea [gaim-migrate @ 17000]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14200
diff changeset
14 if (strncmp(text + 1, "[M ", 3) == 0)
a766441af5ea [gaim-migrate @ 17000]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14200
diff changeset
15 {
a766441af5ea [gaim-migrate @ 17000]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14200
diff changeset
16 int x = (unsigned)text[4];
a766441af5ea [gaim-migrate @ 17000]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14200
diff changeset
17 int y = (unsigned)text[5];
a766441af5ea [gaim-migrate @ 17000]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14200
diff changeset
18 if (x < 0) x += 256;
a766441af5ea [gaim-migrate @ 17000]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14200
diff changeset
19 if (y < 0) y += 256;
a766441af5ea [gaim-migrate @ 17000]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14200
diff changeset
20 x -= 33;
a766441af5ea [gaim-migrate @ 17000]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14200
diff changeset
21 y -= 33;
a766441af5ea [gaim-migrate @ 17000]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14200
diff changeset
22 s = g_strdup_printf("ldown %d %d", x, y);
a766441af5ea [gaim-migrate @ 17000]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14200
diff changeset
23 gnt_entry_set_text(entry, s);
a766441af5ea [gaim-migrate @ 17000]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14200
diff changeset
24 g_free(s);
a766441af5ea [gaim-migrate @ 17000]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14200
diff changeset
25 }
a766441af5ea [gaim-migrate @ 17000]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14200
diff changeset
26 else if (strncmp(text + 1, "[M#", 3) == 0)
a766441af5ea [gaim-migrate @ 17000]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14200
diff changeset
27 gnt_entry_set_text(entry, "up");
a766441af5ea [gaim-migrate @ 17000]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14200
diff changeset
28 else
a766441af5ea [gaim-migrate @ 17000]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14200
diff changeset
29 return FALSE;
a766441af5ea [gaim-migrate @ 17000]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14200
diff changeset
30 return TRUE;
a766441af5ea [gaim-migrate @ 17000]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 14200
diff changeset
31 }
14200
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
32 else
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
33 return TRUE;
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
34 }
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
35
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
36 int main()
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
37 {
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
38 GntWidget *window, *entry;
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
39
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
40 gnt_init();
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
41
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
42 freopen(".error", "w", stderr);
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
43
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
44 window = gnt_hbox_new(FALSE);
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
45 gnt_box_set_toplevel(GNT_BOX(window), TRUE);
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
46
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
47 gnt_box_add_widget(GNT_BOX(window), gnt_label_new("Press any key: "));
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
48
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
49 entry = gnt_entry_new(NULL);
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
50 gnt_box_add_widget(GNT_BOX(window), entry);
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
51 g_signal_connect(G_OBJECT(entry), "key_pressed", G_CALLBACK(print_keycode), NULL);
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
52
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
53 gnt_widget_set_position(window, getmaxx(stdscr) / 2 - 12, getmaxy(stdscr) / 2 - 3);
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
54 gnt_widget_show(window);
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
55
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
56 gnt_main();
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
57 gnt_quit();
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
58 return 0;
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
59 }
5300e2f1fed3 [gaim-migrate @ 16872]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
60