Mercurial > pidgin.yaz
comparison finch/libgnt/test/wm.c @ 15818: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
15817:317e7613e581 | 15818: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 |