# HG changeset patch # User Sadrul Habib Chowdhury # Date 1153175246 0 # Node ID a06f7495af6f7d2a86782fd1dba190fa4049d7fd # Parent 2ae35c0cf616f6f17891cfeb12d034e4289354ba [gaim-migrate @ 16513] It is possible to have multiple gnt-applications sharing the same screen. To try this, 'make WM' in console/libgnt/test. It will have a small 'Command' entry. You can give a command like './focus.so' (or one of the other examples). The applications can also be executed standalone. This required some tinkering to the Makefile. I am not sure whether there is an easier way of doing it. committer: Tailor Script diff -r 2ae35c0cf616 -r a06f7495af6f console/libgnt/test/Makefile --- a/console/libgnt/test/Makefile Mon Jul 17 21:33:50 2006 +0000 +++ b/console/libgnt/test/Makefile Mon Jul 17 22:27:26 2006 +0000 @@ -1,6 +1,6 @@ CC=gcc -CFLAGS=`pkg-config --cflags gobject-2.0` -g -I../ -LDFLAGS=`pkg-config --libs gobject-2.0` -pg -lgnt -L../ +CFLAGS=`pkg-config --cflags gobject-2.0 gmodule-2.0` -g -I../ -DSTANDALONE +LDFLAGS=`pkg-config --libs gobject-2.0 gmodule-2.0` -pg -lgnt -L../ EXAMPLES=combo focus tv multiwin @@ -8,6 +8,9 @@ make examples clean: - rm -f $(EXAMPLES) + rm -f $(EXAMPLES) *.so wm + +WM: wm + for i in $(EXAMPLES); do gcc -shared $(CFLAGS) -USTANDALONE $(LDFLAGS) $${i}.c -o $${i}.so ; done examples: $(EXAMPLES) diff -r 2ae35c0cf616 -r a06f7495af6f console/libgnt/test/combo.c --- a/console/libgnt/test/combo.c Mon Jul 17 21:33:50 2006 +0000 +++ b/console/libgnt/test/combo.c Mon Jul 17 22:27:26 2006 +0000 @@ -20,8 +20,10 @@ GntWidget *box, *combo, *button; GntWidget *hbox; +#ifdef STANDALONE freopen(".error", "w", stderr); gnt_init(); +#endif box = gnt_box_new(FALSE, TRUE); gnt_widget_set_name(box, "box"); @@ -61,9 +63,11 @@ gnt_widget_show(box); +#ifdef STANDALONE gnt_main(); gnt_quit(); +#endif return 0; } diff -r 2ae35c0cf616 -r a06f7495af6f console/libgnt/test/focus.c --- a/console/libgnt/test/focus.c Mon Jul 17 21:33:50 2006 +0000 +++ b/console/libgnt/test/focus.c Mon Jul 17 22:27:26 2006 +0000 @@ -20,16 +20,15 @@ int main() { +#ifdef STANDALONE freopen(".error", "w", stderr); gnt_init(); - +#endif + GntWidget *label = gnt_label_new("So wassup dudes and dudettes!!\nSo this is, like,\nthe third line!! \\o/"); GntWidget *vbox, *hbox, *tree, *box, *button; WINDOW *test; - box(stdscr, 0, 0); - wrefresh(stdscr); - vbox = gnt_box_new(FALSE, FALSE); hbox = gnt_box_new(FALSE, TRUE); gnt_box_set_alignment(GNT_BOX(hbox), GNT_ALIGN_MID); @@ -58,7 +57,6 @@ GNT_WIDGET_UNSET_FLAGS(hbox, GNT_WIDGET_NO_BORDER | GNT_WIDGET_NO_SHADOW); gnt_box_set_title(GNT_BOX(hbox), "This is the title …"); - g_signal_connect(G_OBJECT(tree), "toggled", G_CALLBACK(toggled), NULL); button = gnt_button_new("one"); @@ -77,9 +75,11 @@ gnt_widget_show(hbox); +#ifdef STANDALONE gnt_main(); gnt_quit(); +#endif return 0; } diff -r 2ae35c0cf616 -r a06f7495af6f console/libgnt/test/multiwin.c --- a/console/libgnt/test/multiwin.c Mon Jul 17 21:33:50 2006 +0000 +++ b/console/libgnt/test/multiwin.c Mon Jul 17 22:27:26 2006 +0000 @@ -13,14 +13,13 @@ int main() { +#ifdef STANDALONE freopen(".error", "w", stderr); gnt_init(); +#endif GntWidget *hbox, *tree, *box2; - box(stdscr, 0, 0); - wrefresh(stdscr); - hbox = gnt_box_new(FALSE, TRUE); box2 = gnt_box_new(FALSE, TRUE); @@ -64,9 +63,11 @@ g_timeout_add(5000, (GSourceFunc)show, box2); +#ifdef STANDALONE gnt_main(); gnt_quit(); +#endif return 0; } diff -r 2ae35c0cf616 -r a06f7495af6f console/libgnt/test/tv.c --- a/console/libgnt/test/tv.c Mon Jul 17 21:33:50 2006 +0000 +++ b/console/libgnt/test/tv.c Mon Jul 17 22:27:26 2006 +0000 @@ -35,12 +35,11 @@ { GntWidget *hbox, *entry, *view; +#ifdef STANDALONE freopen(".error", "w", stderr); gnt_init(); - - box(stdscr, 0, 0); - wrefresh(stdscr); +#endif hbox = gnt_box_new(FALSE, TRUE); gnt_widget_set_name(hbox, "hbox"); @@ -67,9 +66,11 @@ g_signal_connect(G_OBJECT(entry), "key_pressed", G_CALLBACK(key_pressed), view); +#ifdef STANDALONE gnt_main(); gnt_quit(); +#endif return 0; } diff -r 2ae35c0cf616 -r a06f7495af6f console/libgnt/test/wm.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/console/libgnt/test/wm.c Mon Jul 17 22:27:26 2006 +0000 @@ -0,0 +1,65 @@ +#include + +#include +#include +#include +#include + +static gboolean +key_pressed(GntEntry *entry, const char *text, gpointer null) +{ + if (*text != '\r') + return FALSE; + + { + const char *cmd; + void *handle; + void (*func)(); + + cmd = gnt_entry_get_text(entry); + handle = g_module_open(cmd, G_MODULE_BIND_LOCAL); + if (handle && g_module_symbol(handle, "main", (gpointer)&func)) + { + gnt_entry_clear(entry); + func(); + } + else + { + GntWidget *widget = gnt_vbox_new(FALSE); + gnt_box_set_toplevel(GNT_BOX(widget), TRUE); + gnt_box_set_title(GNT_BOX(widget), "Error"); + gnt_box_add_widget(GNT_BOX(widget), gnt_label_new("Could not execute.")); + + gnt_widget_show(widget); + } + } + + return TRUE; +} + +int main() +{ + GntWidget *window, *entry; + + freopen(".error", "w", stderr); + + gnt_init(); + + window = gnt_hbox_new(FALSE); + + gnt_box_add_widget(GNT_BOX(window), gnt_label_new("Command")); + + entry = gnt_entry_new(NULL); + g_signal_connect(G_OBJECT(entry), "key_pressed", G_CALLBACK(key_pressed), NULL); + gnt_box_add_widget(GNT_BOX(window), entry); + + gnt_widget_set_position(window, 0, getmaxy(stdscr) - 2); + gnt_widget_show(window); + + gnt_main(); + + gnt_quit(); + + return 0; +} +