source: trunk/third/libbonobo/tests/test-properties-client.c @ 18574

Revision 18574, 4.9 KB checked in by ghudson, 21 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r18573, which included commits to RCS files with non-trunk default branches.
Line 
1#include <config.h>
2#include <stdio.h>
3#include <libbonobo.h>
4
5CORBA_ORB                orb;
6Bonobo_PropertyBag       pb;
7CORBA_Environment        ev;
8Bonobo_PropertyBag       pb;
9
10static char *
11simple_print_type (CORBA_TypeCode tc)
12{
13        static char s[1024];
14
15        switch (tc->kind) {
16        case CORBA_tk_boolean:
17                g_snprintf (s, sizeof (s), "boolean");
18                break;
19        case CORBA_tk_short:
20                g_snprintf (s, sizeof (s), "short");
21                break;
22        case CORBA_tk_ushort:
23                g_snprintf (s, sizeof (s), "ushort");
24                break;
25        case CORBA_tk_long:
26                g_snprintf (s, sizeof (s), "long");
27                break;
28        case CORBA_tk_ulong:
29                g_snprintf (s, sizeof (s), "ulong");
30                break;
31        case CORBA_tk_float:
32                g_snprintf (s, sizeof (s), "float");
33                break;
34        case CORBA_tk_double:
35                g_snprintf (s, sizeof (s), "double");
36                break;
37        case CORBA_tk_string:
38                g_snprintf (s, sizeof (s), "string");
39                break;
40        default:
41                g_snprintf (s, sizeof (s), "Unknown");
42                break;
43        }
44
45        return s;
46}
47
48static char *
49simple_print_value (char *name, CORBA_TypeCode tc)
50{
51        static char s[1024];
52
53        switch (tc->kind) {
54        case CORBA_tk_boolean:
55                g_snprintf (s, sizeof (s), "%s",
56                    bonobo_pbclient_get_boolean (pb, name, NULL) ?
57                        "True" : "False");
58                break;
59        case CORBA_tk_long:
60                g_snprintf (s, sizeof (s), "%d",
61                    bonobo_pbclient_get_long (pb, name, NULL));
62                break;
63        case CORBA_tk_float:
64                g_snprintf (s, sizeof (s), "%f",
65                    bonobo_pbclient_get_float (pb, name, NULL));
66                break;
67        case CORBA_tk_double:
68                g_snprintf (s, sizeof (s), "%f",
69                    bonobo_pbclient_get_double (pb, name, NULL));
70                break;
71        case CORBA_tk_string:
72                g_snprintf (s, sizeof (s), "%s",
73                    bonobo_pbclient_get_string (pb, name, NULL));
74                break;
75        default:
76                g_snprintf (s, sizeof (s), "Unknown");
77                break;
78        }
79
80        return s;
81}
82
83
84static char *
85simple_print_default_value (char *name, CORBA_TypeCode tc)
86{
87        static char s[1024];
88
89        switch (tc->kind) {
90        case CORBA_tk_boolean:
91                g_snprintf (s, sizeof (s), "%s",
92                    bonobo_pbclient_get_default_boolean (pb, name, NULL) ?
93                        "True" : "False");
94                break;
95        case CORBA_tk_long:
96                g_snprintf (s, sizeof (s), "%d",
97                    bonobo_pbclient_get_default_long (pb, name, NULL));
98                break;
99        case CORBA_tk_float:
100                g_snprintf (s, sizeof (s), "%f",
101                    bonobo_pbclient_get_default_float (pb, name, NULL));
102                break;
103        case CORBA_tk_double:
104                g_snprintf (s, sizeof (s), "%f",
105                    bonobo_pbclient_get_default_double (pb, name, NULL));
106                break;
107        case CORBA_tk_string:
108                g_snprintf (s, sizeof (s), "%s",
109                    bonobo_pbclient_get_default_string (pb, name, NULL));
110                break;
111        default:
112                g_snprintf (s, sizeof (s), "Unknown");
113                break;
114        }
115
116        return s;
117}
118
119
120static char *
121simple_print_read_only (char *name)
122{
123        Bonobo_PropertyFlags flags;
124
125        flags = bonobo_pbclient_get_flags (pb, name, NULL);
126
127        return (flags & Bonobo_PROPERTY_READABLE) ?
128                "ReadOnly" : "ReadWrite";
129}
130
131static void
132print_props (void)
133{
134        GList *props;
135        GList *l;
136
137        props = bonobo_pbclient_get_keys (pb, NULL);
138
139        for (l = props; l != NULL; l = l->next) {
140                CORBA_TypeCode tc;
141                char *name = l->data;
142
143                tc = bonobo_pbclient_get_type (pb, name, NULL);
144
145                g_print ("%s [%s] %s %s %s\n",
146                         name,
147                         simple_print_type (tc),
148                         simple_print_value (name, tc),
149                         simple_print_default_value (name, tc),
150                         simple_print_read_only (name));
151
152                CORBA_Object_release ((CORBA_Object) tc, NULL);
153        }
154
155        bonobo_pbclient_free_keys (props);
156}
157
158
159static guint
160create_bag_client (void)
161{
162        print_props ();
163
164        bonobo_pbclient_set_boolean (pb, "boolean-test", FALSE, NULL);
165        bonobo_pbclient_set_long    (pb, "long-test", 3, NULL);
166        bonobo_pbclient_set_float   (pb, "float-test", 0.00001, NULL);
167        bonobo_pbclient_set_double  (pb, "double-test", 2.0001, NULL);
168        bonobo_pbclient_set_string  (pb, "string-test",
169                                     "life is a wonderful gift", NULL);
170
171        bonobo_pbclient_set (
172                pb, NULL,
173                "boolean-test", TC_CORBA_boolean, FALSE,
174                "long-test", TC_CORBA_long, 3,
175                "float-test", TC_CORBA_float, 0.00001,
176                "double-test", TC_CORBA_double, 2.0001,
177                "string-test", TC_CORBA_string, "you are a precious flower",
178                NULL);
179
180        {
181                CORBA_any a;
182                CORBA_boolean b = TRUE;
183                a._type = TC_CORBA_boolean;
184                a._value = &b;
185                bonobo_pbclient_set_value_async
186                        (pb, "boolean-test", &a, NULL);
187        }
188
189        bonobo_main_quit ();
190
191        return FALSE;
192}
193
194
195int
196main (int argc, char **argv)
197{
198        CORBA_exception_init (&ev);
199
200        if (!bonobo_init (&argc, argv))
201                g_error ("Could not initialize Bonobo");
202
203        {
204                int   size;
205                char  ior [1024];
206                FILE *infile = fopen ("iorfile","rb");
207
208                if (!infile)
209                        g_error ("Start the server before running the client");
210
211                size = fread (ior,1,1024,infile);
212                fclose (infile);
213                ior [size] = '\0';   /* insure that string is terminated correctly */
214
215                pb = CORBA_ORB_string_to_object (orb, ior, &ev);
216                g_assert (ev._major == CORBA_NO_EXCEPTION);
217        }
218       
219        if (pb == CORBA_OBJECT_NIL ||
220            CORBA_Object_non_existent (pb, &ev)) {
221                g_error ("Could not bind to PropertyBag object");
222                return 1;
223        }
224
225        g_idle_add ((GSourceFunc) create_bag_client, NULL);
226
227        bonobo_main ();
228
229        bonobo_object_release_unref (pb, NULL);
230
231        return bonobo_debug_shutdown ();
232}
Note: See TracBrowser for help on using the repository browser.