Fixed typo
[atksocket-atkplug-example:mainline.git] / socket / ta-socket.c
1 /*
2  * Copyright (C) 2011 Igalia S.L.
3  * Authors: Mario Sanchez Prada <msanchez@igalia.com>
4  *
5  * Based on a C# example written in C# by Mike Gorse:
6  * http://mgorse.freeshell.org/plug-socket-test.tar.gz
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of version 3 of the GNU General Public
10  * License as published by the Free Software Foundation.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public
18  * License along with this program; if not, write to the
19  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20  * Boston, MA 02111-1307, USA.
21  *
22  */
23 #include "ta-socket-label.h"
24
25 #include <gtk/gtk.h>
26
27 #define WINDOW_WIDTH 300
28 #define WINDOW_HEIGHT -1
29
30 static GtkWidget *entry = NULL;
31 static GtkWidget *button = NULL;
32 static GtkWidget *socket = NULL;
33
34 static void
35 _button_clicked_cb (GtkButton *button, gpointer data)
36 {
37   AtkObject *socketAxObject = NULL;
38   gchar *text_id = NULL;
39
40   text_id = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry)));
41
42   if (text_id && text_id[0] != '\0')
43     {
44       socketAxObject = gtk_widget_get_accessible (socket);
45
46       if (ATK_IS_SOCKET (socketAxObject))
47         {
48           g_print ("[SOCKET] Embedding object with ID %s\n", text_id);
49           atk_socket_embed (ATK_SOCKET (socketAxObject), text_id);
50           g_print ("[SOCKET] Done\n");
51         }
52       else
53         g_print ("Not embedding anything: Not an instance of AtkSocket\n");
54     }
55   else
56     g_print ("Not embedding: you need to provide an ID\n");
57
58   g_free (text_id);
59 }
60
61 static void
62 _create_widgets (GtkWidget *window)
63 {
64   GtkWidget *vbox = NULL;
65
66   vbox = gtk_vbox_new (FALSE, 0);
67
68   /* Label + entry */
69   entry = gtk_entry_new ();
70   gtk_box_pack_start (GTK_BOX (vbox), entry, TRUE, TRUE, 6);
71
72   button = gtk_button_new_with_label ("Connect to plug");
73   g_signal_connect (button, "clicked", G_CALLBACK (_button_clicked_cb), NULL);
74   gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 6);
75
76   /* Our socket accessible */
77   socket = ta_socket_label_new ("Socket accessible goes here");
78   gtk_box_pack_start (GTK_BOX (vbox), socket, FALSE, FALSE, 6);
79
80   gtk_container_add (GTK_CONTAINER (window), vbox);
81 }
82
83 int
84 main (int argc, char**argv)
85 {
86   GtkWidget *window = NULL;
87
88   gtk_init (&argc, &argv);
89
90   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
91   g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
92
93   _create_widgets (window);
94
95   gtk_window_set_default_size (GTK_WINDOW (window),
96                                WINDOW_WIDTH, WINDOW_HEIGHT);
97   gtk_widget_show_all (window);
98   gtk_main ();
99 }