comparison finch/libgnt/test/wm.c @ 15817:0e3a8505ebbe

renamed gaim-text to finch
author Sean Egan <seanegan@gmail.com>
date Sun, 18 Mar 2007 19:38:15 +0000
parents
children a8cc50c2279f
comparison
equal deleted inserted replaced
15816:317e7613e581 15817:0e3a8505ebbe
1 #include <gmodule.h>
2
3 #include <gnt.h>
4 #include <gntbox.h>
5 #include <gntentry.h>
6 #include <gntlabel.h>
7
8 static gboolean
9 key_pressed(GntEntry *entry, const char *text, gpointer null)
10 {
11 if (*text != '\r')
12 return FALSE;
13
14 {
15 const char *cmd;
16 void *handle;
17 void (*func)();
18
19 cmd = gnt_entry_get_text(entry);
20 handle = g_module_open(cmd, G_MODULE_BIND_LOCAL);
21 if (handle && g_module_symbol(handle, "main", (gpointer)&func))
22 {
23 char *argv[] = {cmd, NULL};
24 gnt_entry_clear(entry);
25 func(1, argv);
26 }
27 else
28 {
29 GntWidget *widget = gnt_vbox_new(FALSE);
30 gnt_box_set_toplevel(GNT_BOX(widget), TRUE);
31 gnt_box_set_title(GNT_BOX(widget), "Error");
32 gnt_box_add_widget(GNT_BOX(widget), gnt_label_new("Could not execute."));
33 gnt_box_add_widget(GNT_BOX(widget), gnt_label_new(g_module_error()));
34
35 gnt_widget_show(widget);
36 }
37 }
38
39 return TRUE;
40 }
41
42 int main()
43 {
44 GntWidget *window, *entry;
45
46 freopen(".error", "w", stderr);
47
48 gnt_init();
49
50 window = gnt_hbox_new(FALSE);
51
52 gnt_box_add_widget(GNT_BOX(window), gnt_label_new("Command"));
53
54 entry = gnt_entry_new(NULL);
55 g_signal_connect(G_OBJECT(entry), "key_pressed", G_CALLBACK(key_pressed), NULL);
56 gnt_box_add_widget(GNT_BOX(window), entry);
57
58 gnt_widget_set_position(window, 0, getmaxy(stdscr) - 2);
59 gnt_widget_show(window);
60
61 gnt_main();
62
63 gnt_quit();
64
65 return 0;
66 }
67