Mercurial > pidgin
changeset 13960:a06f7495af6f
[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 <tailor@pidgin.im>
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Mon, 17 Jul 2006 22:27:26 +0000 |
parents | 2ae35c0cf616 |
children | b0e37dcb3987 |
files | console/libgnt/test/Makefile console/libgnt/test/combo.c console/libgnt/test/focus.c console/libgnt/test/multiwin.c console/libgnt/test/tv.c console/libgnt/test/wm.c |
diffstat | 6 files changed, 88 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- 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)
--- 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; }
--- 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; }
--- 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; }
--- 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; }
--- /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 <gmodule.h> + +#include <gnt.h> +#include <gntbox.h> +#include <gntentry.h> +#include <gntlabel.h> + +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; +} +