static void create_bag (void) { PropData *pd = g_new0 (PropData, 1); BonoboArg *def; char *dstr; CORBA_char *ior; FILE *iorfile; pd->i = 987654321; pd->l = 123456789; pd->b = TRUE; pd->f = 2.71828182845; pd->d = 3.14159265358; pd->s = "Hello world"; /* Create the property bag. */ pb = bonobo_property_bag_new (get_prop, set_prop, pd); dstr = "Testing 1 2 3"; /* Add properties */ bonobo_property_bag_add (pb, "int-test", PROP_INTEGER_TEST, BONOBO_ARG_INT, NULL, dstr, 0); def = bonobo_arg_new (BONOBO_ARG_STRING); BONOBO_ARG_SET_STRING (def, "a default string"); bonobo_property_bag_add (pb, "string-test", PROP_STRING_TEST, BONOBO_ARG_STRING, def, dstr, Bonobo_PROPERTY_READABLE | Bonobo_PROPERTY_WRITEABLE); bonobo_property_bag_add (pb, "long-test", PROP_LONG_TEST, BONOBO_ARG_LONG, NULL, dstr, 0); bonobo_property_bag_add (pb, "boolean-test", PROP_BOOLEAN_TEST, BONOBO_ARG_BOOLEAN, NULL, dstr, 0); def = bonobo_arg_new (BONOBO_ARG_FLOAT); BONOBO_ARG_SET_FLOAT (def, 0.13579); bonobo_property_bag_add (pb, "float-test", PROP_FLOAT_TEST, BONOBO_ARG_FLOAT, def, dstr, 0); bonobo_property_bag_add (pb, "double-test", PROP_DOUBLE_TEST, BONOBO_ARG_DOUBLE, NULL, dstr, 0); iorfile = fopen ("iorfile", "wb"); /* Print out the IOR for this object. */ ior = CORBA_ORB_object_to_string (orb, BONOBO_OBJREF (pb), &ev); /* So we can tee the output to compare */ fwrite (ior, strlen (ior), 1, iorfile); fclose (iorfile); CORBA_free (ior); }
static void get_prop (BonoboPropertyBag *bag, BonoboArg *arg, guint arg_id, CORBA_Environment *ev, gpointer user_data) { EItipControl *itip = user_data; switch (arg_id) { case FROM_ADDRESS_ARG_ID: BONOBO_ARG_SET_STRING (arg, e_itip_control_get_from_address (itip)); break; case VIEW_ONLY_ARG_ID: BONOBO_ARG_SET_INT (arg, e_itip_control_get_view_only (itip)); break; } }
static void get_prop (BonoboPropertyBag *bag, BonoboArg *arg, guint arg_id, CORBA_Environment *ev, gpointer user_data) { PropData *pd = user_data; switch (arg_id) { case PROP_BOOLEAN_TEST: BONOBO_ARG_SET_BOOLEAN (arg, pd->b); break; case PROP_INTEGER_TEST: BONOBO_ARG_SET_INT (arg, pd->i); break; case PROP_LONG_TEST: BONOBO_ARG_SET_LONG (arg, pd->l); break; case PROP_FLOAT_TEST: BONOBO_ARG_SET_FLOAT (arg, pd->f); break; case PROP_DOUBLE_TEST: BONOBO_ARG_SET_DOUBLE (arg, pd->d); break; case PROP_STRING_TEST: BONOBO_ARG_SET_STRING (arg, pd->s); break; default: bonobo_exception_set (ev, ex_Bonobo_PropertyBag_NotFound); }; }