Added GTK+ interface to connect to server
authorThadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Tue, 25 Nov 2008 01:31:51 +0000 (23:31 -0200)
committerThadeu Lima de Souza Cascardo <cascardo@minaslivre.org>
Tue, 25 Nov 2008 01:51:44 +0000 (23:51 -0200)
Makefile
ui.c

index 2b9dd43..cc14e6c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,8 @@
 OBJECTS = sort_udns.o tcp_connect.o iksemel_extra.o \
        xmpp.o features.o sasl.o bind.o disco.o hook.o message.o
 CC = gcc
-CFLAGS = -g -Wall `pkg-config --cflags iksemel libgsasl glib-2.0`
-LIBS = -ludns `pkg-config --libs iksemel libgsasl glib-2.0`
+CFLAGS = -g -Wall `pkg-config --cflags iksemel libgsasl glib-2.0 gtk+-2.0`
+LIBS = -ludns `pkg-config --libs iksemel libgsasl glib-2.0 gtk+-2.0`
 
 all: tictactoe ui
 
diff --git a/ui.c b/ui.c
index 7574652..4527047 100644 (file)
--- a/ui.c
+++ b/ui.c
@@ -17,6 +17,7 @@
  */
 
 
+#include <gtk/gtk.h>
 #include <stdio.h>
 #include <glib.h>
 #include <udns.h>
@@ -30,29 +31,58 @@ rploop (GIOChannel *src, GIOCondition cond, gpointer xmpp)
   return TRUE;
 }
 
-int
-main (int argc, char **argv)
+GtkWidget *entry1;
+GtkWidget *entry2;
+GtkWidget *entry3;
+
+static void
+connect_clicked (GtkWidget *button, gpointer data)
 {
-  GMainLoop *loop;
   GIOChannel *channel;
+  hc_xmpp_t *xmpp;
   char *server;
   char *user;
   char *password;
-  hc_xmpp_t *xmpp;
-  if (argc < 4)
-    {
-      printf ("tictactoe server user password\n");
-      return 1;
-    }
-  server = argv[1];
-  user = argv[2];
-  password = argv[3];
-  dns_init (NULL, 1);
+  server = (char *) gtk_entry_get_text (GTK_ENTRY (entry1));
+  user = (char *) gtk_entry_get_text (GTK_ENTRY (entry2));
+  password = (char *) gtk_entry_get_text (GTK_ENTRY (entry3));
   xmpp = hc_xmpp_new (hc_xmpp_hook, server, user, password);
   hc_xmpp_send_stream (xmpp);
   channel = g_io_channel_unix_new (hc_xmpp_fd (xmpp));
-  loop = g_main_loop_new (g_main_context_default (), TRUE);
   g_io_add_watch (channel, G_IO_IN, rploop, xmpp);
+}
+
+static void
+ui (void)
+{
+  GtkWidget *window;
+  GtkWidget *vbox;
+  GtkWidget *button;
+  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+  vbox = gtk_vbox_new (TRUE, 5);
+  entry1 = gtk_entry_new ();
+  entry2 = gtk_entry_new ();
+  entry3 = gtk_entry_new ();
+  gtk_entry_set_visibility (GTK_ENTRY (entry3), FALSE);
+  button = gtk_button_new_with_label ("Connect");
+  g_signal_connect (G_OBJECT (button), "clicked",
+                    G_CALLBACK (connect_clicked), NULL);
+  gtk_container_add (GTK_CONTAINER (window), vbox);
+  gtk_container_add (GTK_CONTAINER (vbox), entry1);
+  gtk_container_add (GTK_CONTAINER (vbox), entry2);
+  gtk_container_add (GTK_CONTAINER (vbox), entry3);
+  gtk_container_add (GTK_CONTAINER (vbox), button);
+  gtk_widget_show_all (window);
+}
+
+int
+main (int argc, char **argv)
+{
+  GMainLoop *loop;
+  gtk_init (&argc, &argv);
+  dns_init (NULL, 1);
+  loop = g_main_loop_new (g_main_context_default (), TRUE);
+  ui ();
   g_main_loop_run (loop);
   return 0;
 }