Enlightenment CVS committal Author : andrunko Project : e17 Module : libs/etk
Dir : e17/libs/etk/src/lib Modified Files: etk_bin.c etk_button.c etk_combobox.c etk_combobox_entry.c etk_container.c etk_filechooser_widget.c etk_marshallers.c etk_marshallers.h etk_menu.c etk_menu_item.c etk_menu_shell.c etk_property.c etk_property.h etk_toplevel.c etk_widget.c Log Message: Changed properties and signals to use object instead of pointer where appropriate. =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_bin.c,v retrieving revision 1.23 retrieving revision 1.24 diff -u -3 -r1.23 -r1.24 --- etk_bin.c 21 Aug 2007 15:04:54 -0000 1.23 +++ etk_bin.c 28 Aug 2007 20:06:32 -0000 1.24 @@ -46,7 +46,7 @@ ETK_CONSTRUCTOR(_etk_bin_constructor), NULL); etk_type_property_add(bin_type, "child", ETK_BIN_CHILD_PROPERTY, - ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_pointer(NULL)); + ETK_PROPERTY_OBJECT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_object(NULL)); bin_type->property_set = _etk_bin_property_set; bin_type->property_get = _etk_bin_property_get; @@ -121,7 +121,7 @@ switch (property_id) { case ETK_BIN_CHILD_PROPERTY: - etk_bin_child_set(bin, ETK_WIDGET(etk_property_value_pointer_get(value))); + etk_bin_child_set(bin, ETK_WIDGET(etk_property_value_object_get(value))); break; default: break; @@ -139,7 +139,7 @@ switch (property_id) { case ETK_BIN_CHILD_PROPERTY: - etk_property_value_pointer_set(value, bin->child); + etk_property_value_object_set(value, ETK_OBJECT(bin->child)); break; default: break; =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_button.c,v retrieving revision 1.43 retrieving revision 1.44 diff -u -3 -r1.43 -r1.44 --- etk_button.c 21 Aug 2007 15:04:54 -0000 1.43 +++ etk_button.c 28 Aug 2007 20:06:32 -0000 1.44 @@ -83,7 +83,7 @@ etk_type_property_add(button_type, "label", ETK_BUTTON_LABEL_PROPERTY, ETK_PROPERTY_STRING, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_string(NULL)); etk_type_property_add(button_type, "image", ETK_BUTTON_IMAGE_PROPERTY, - ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_pointer(NULL)); + ETK_PROPERTY_OBJECT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_object(NULL)); etk_type_property_add(button_type, "xalign", ETK_BUTTON_XALIGN_PROPERTY, ETK_PROPERTY_FLOAT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_float(0.5)); etk_type_property_add(button_type, "yalign", ETK_BUTTON_YALIGN_PROPERTY, @@ -468,7 +468,7 @@ etk_button_label_set(button, etk_property_value_string_get(value)); break; case ETK_BUTTON_IMAGE_PROPERTY: - etk_button_image_set(button, ETK_IMAGE(etk_property_value_pointer_get(value))); + etk_button_image_set(button, ETK_IMAGE(etk_property_value_object_get(value))); break; case ETK_BUTTON_XALIGN_PROPERTY: etk_button_alignment_set(button, etk_property_value_float_get(value), button->yalign); @@ -501,7 +501,7 @@ etk_property_value_string_set(value, etk_button_label_get(button)); break; case ETK_BUTTON_IMAGE_PROPERTY: - etk_property_value_pointer_set(value, ETK_OBJECT(button->image)); + etk_property_value_object_set(value, ETK_OBJECT(button->image)); break; case ETK_BUTTON_XALIGN_PROPERTY: etk_property_value_float_set(value, button->xalign); =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_combobox.c,v retrieving revision 1.51 retrieving revision 1.52 diff -u -3 -r1.51 -r1.52 --- etk_combobox.c 21 Aug 2007 15:04:54 -0000 1.51 +++ etk_combobox.c 28 Aug 2007 20:06:32 -0000 1.52 @@ -91,14 +91,14 @@ ETK_CONSTRUCTOR(_etk_combobox_constructor), ETK_DESTRUCTOR(_etk_combobox_destructor)); _etk_combobox_signals[ETK_COMBOBOX_ITEM_ACTIVATED_SIGNAL] = etk_signal_new("item-activated", - combobox_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL); + combobox_type, -1, etk_marshaller_VOID__OBJECT, NULL, NULL); _etk_combobox_signals[ETK_COMBOBOX_ACTIVE_ITEM_CHANGED_SIGNAL] = etk_signal_new("active-item-changed", combobox_type, -1, etk_marshaller_VOID__VOID, NULL, NULL); etk_type_property_add(combobox_type, "items-height", ETK_COMBOBOX_ITEMS_HEIGHT_PROPERTY, ETK_PROPERTY_INT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_int(DEFAULT_ITEM_HEIGHT)); etk_type_property_add(combobox_type, "active-item", ETK_COMBOBOX_ACTIVE_ITEM_PROPERTY, - ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_pointer(NULL)); + ETK_PROPERTY_OBJECT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_object(NULL)); combobox_type->property_set = _etk_combobox_property_set; combobox_type->property_get = _etk_combobox_property_get; @@ -1016,7 +1016,7 @@ etk_combobox_items_height_set(combobox, etk_property_value_int_get(value)); break; case ETK_COMBOBOX_ACTIVE_ITEM_PROPERTY: - etk_combobox_active_item_set(combobox, ETK_COMBOBOX_ITEM(etk_property_value_pointer_get(value))); + etk_combobox_active_item_set(combobox, ETK_COMBOBOX_ITEM(etk_property_value_object_get(value))); break; default: break; @@ -1037,7 +1037,7 @@ etk_property_value_int_set(value, combobox->items_height); break; case ETK_COMBOBOX_ACTIVE_ITEM_PROPERTY: - etk_property_value_pointer_set(value, combobox->active_item); + etk_property_value_object_set(value, ETK_OBJECT(combobox->active_item)); break; default: break; =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_combobox_entry.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- etk_combobox_entry.c 21 Aug 2007 15:04:54 -0000 1.3 +++ etk_combobox_entry.c 28 Aug 2007 20:06:32 -0000 1.4 @@ -93,7 +93,7 @@ etk_type_property_add(combobox_entry_type, "items-height", ETK_COMBOBOX_ENTRY_ITEMS_HEIGHT_PROPERTY, ETK_PROPERTY_INT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_int(DEFAULT_ITEM_HEIGHT)); etk_type_property_add(combobox_entry_type, "active-item", ETK_COMBOBOX_ENTRY_ACTIVE_ITEM_PROPERTY, - ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_pointer(NULL)); + ETK_PROPERTY_OBJECT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_object(NULL)); combobox_entry_type->property_set = _etk_combobox_entry_property_set; combobox_entry_type->property_get = _etk_combobox_entry_property_get; @@ -950,7 +950,7 @@ etk_combobox_entry_items_height_set(combobox_entry, etk_property_value_int_get(value)); break; case ETK_COMBOBOX_ENTRY_ACTIVE_ITEM_PROPERTY: - etk_combobox_entry_active_item_set(combobox_entry, ETK_COMBOBOX_ENTRY_ITEM(etk_property_value_pointer_get(value))); + etk_combobox_entry_active_item_set(combobox_entry, ETK_COMBOBOX_ENTRY_ITEM(etk_property_value_object_get(value))); break; default: break; @@ -971,7 +971,7 @@ etk_property_value_int_set(value, combobox_entry->items_height); break; case ETK_COMBOBOX_ENTRY_ACTIVE_ITEM_PROPERTY: - etk_property_value_pointer_set(value, combobox_entry->active_item); + etk_property_value_object_set(value, ETK_OBJECT(combobox_entry->active_item)); break; default: break; =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_container.c,v retrieving revision 1.20 retrieving revision 1.21 diff -u -3 -r1.20 -r1.21 --- etk_container.c 21 Aug 2007 15:04:54 -0000 1.20 +++ etk_container.c 28 Aug 2007 20:06:32 -0000 1.21 @@ -52,9 +52,9 @@ ETK_CONSTRUCTOR(_etk_container_constructor), NULL); _etk_container_signals[ETK_CONTAINER_CHILD_ADDED_SIGNAL] = etk_signal_new("child-added", - container_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL); + container_type, -1, etk_marshaller_VOID__OBJECT, NULL, NULL); _etk_container_signals[ETK_CONTAINER_CHILD_REMOVED_SIGNAL] = etk_signal_new("child-removed", - container_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL); + container_type, -1, etk_marshaller_VOID__OBJECT, NULL, NULL); etk_type_property_add(container_type, "border-width", ETK_CONTAINER_BORDER_WIDTH_PROPERTY, ETK_PROPERTY_INT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_int(0)); =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_filechooser_widget.c,v retrieving revision 1.26 retrieving revision 1.27 diff -u -3 -r1.26 -r1.27 --- etk_filechooser_widget.c 21 Aug 2007 15:04:54 -0000 1.26 +++ etk_filechooser_widget.c 28 Aug 2007 20:06:32 -0000 1.27 @@ -118,8 +118,6 @@ { filechooser_widget_type = etk_type_new("Etk_Filechooser_Widget", ETK_WIDGET_TYPE, sizeof(Etk_Filechooser_Widget), ETK_CONSTRUCTOR(_etk_filechooser_widget_constructor), ETK_DESTRUCTOR(_etk_filechooser_widget_destructor)); - //_etk_filechooser_widget_signals[ETK_FILECHOOSER_WIDGET_TEXT_POPPED_SIGNAL] = etk_signal_new("text_popped", filechooser_widget_type, -1, etk_marshaller_VOID__INT_POINTER, NULL, NULL); - etk_type_property_add(filechooser_widget_type, "path", ETK_FILECHOOSER_WIDGET_PATH_PROPERTY, ETK_PROPERTY_STRING, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_string(NULL)); etk_type_property_add(filechooser_widget_type, "select-multiple", ETK_FILECHOOSER_WIDGET_SELECT_MULTIPLE_PROPERTY, ETK_PROPERTY_BOOL, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_bool(ETK_FALSE)); etk_type_property_add(filechooser_widget_type, "show-hidden", ETK_FILECHOOSER_WIDGET_SHOW_HIDDEN_PROPERTY, ETK_PROPERTY_BOOL, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_bool(ETK_FALSE)); =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_marshallers.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- etk_marshallers.c 31 Jul 2007 16:49:47 -0000 1.8 +++ etk_marshallers.c 28 Aug 2007 20:06:32 -0000 1.9 @@ -65,6 +65,22 @@ callback_VOID__DOUBLE(object, arg1, data); } +/* etk_marshaller_VOID__OBJECT */ +void etk_marshaller_VOID__OBJECT(Etk_Callback callback, Etk_Object *object, void *data, void *return_value, va_list arguments) +{ + typedef void (*Etk_Callback_VOID__OBJECT)(Etk_Object *object, Etk_Object *arg1, void *data); + Etk_Callback_VOID__OBJECT callback_VOID__OBJECT; + Etk_Object *arg1; + + if (!callback || !object) + return; + + arg1 = va_arg(arguments, Etk_Object *); + + callback_VOID__OBJECT = (Etk_Callback_VOID__OBJECT)callback; + callback_VOID__OBJECT(object, arg1, data); +} + /* etk_marshaller_VOID__POINTER */ void etk_marshaller_VOID__POINTER(Etk_Callback callback, Etk_Object *object, void *data, void *return_value, va_list arguments) { =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_marshallers.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- etk_marshallers.h 31 Jul 2007 16:49:47 -0000 1.8 +++ etk_marshallers.h 28 Aug 2007 20:06:32 -0000 1.9 @@ -9,6 +9,7 @@ void etk_marshaller_VOID__INT(Etk_Callback callback, Etk_Object *object, void *data, void *return_value, va_list arguments); void etk_marshaller_VOID__INT_INT(Etk_Callback callback, Etk_Object *object, void *data, void *return_value, va_list arguments); void etk_marshaller_VOID__DOUBLE(Etk_Callback callback, Etk_Object *object, void *data, void *return_value, va_list arguments); +void etk_marshaller_VOID__OBJECT(Etk_Callback callback, Etk_Object *object, void *data, void *return_value, va_list arguments); void etk_marshaller_VOID__POINTER(Etk_Callback callback, Etk_Object *object, void *data, void *return_value, va_list arguments); void etk_marshaller_VOID__POINTER_POINTER(Etk_Callback callback, Etk_Object *object, void *data, void *return_value, va_list arguments); void etk_marshaller_VOID__INT_POINTER(Etk_Callback callback, Etk_Object *object, void *data, void *return_value, va_list arguments); =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_menu.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -3 -r1.27 -r1.28 --- etk_menu.c 21 Aug 2007 15:04:54 -0000 1.27 +++ etk_menu.c 28 Aug 2007 20:06:32 -0000 1.28 @@ -71,7 +71,7 @@ menu_type, -1, etk_marshaller_VOID__VOID, NULL, NULL); etk_type_property_add(menu_type, "parent-item", ETK_MENU_PARENT_ITEM_PROPERTY, - ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_pointer(NULL)); + ETK_PROPERTY_OBJECT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_object(NULL)); menu_type->property_set = _etk_menu_property_set; menu_type->property_get = _etk_menu_property_get; @@ -215,7 +215,7 @@ switch (property_id) { case ETK_MENU_PARENT_ITEM_PROPERTY: - etk_menu_item_submenu_set(ETK_MENU_ITEM(etk_property_value_pointer_get(value)), menu); + etk_menu_item_submenu_set(ETK_MENU_ITEM(etk_property_value_object_get(value)), menu); break; default: break; @@ -233,7 +233,7 @@ switch (property_id) { case ETK_MENU_PARENT_ITEM_PROPERTY: - etk_property_value_pointer_set(value, menu->parent_item); + etk_property_value_object_set(value, ETK_OBJECT(menu->parent_item)); break; default: break; =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_menu_item.c,v retrieving revision 1.29 retrieving revision 1.30 diff -u -3 -r1.29 -r1.30 --- etk_menu_item.c 21 Aug 2007 15:04:54 -0000 1.29 +++ etk_menu_item.c 28 Aug 2007 20:06:32 -0000 1.30 @@ -97,7 +97,7 @@ etk_type_property_add(menu_item_type, "label", ETK_MENU_ITEM_LABEL_PROPERTY, ETK_PROPERTY_STRING, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_string(NULL)); etk_type_property_add(menu_item_type, "submenu", ETK_MENU_ITEM_SUBMENU_PROPERTY, - ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_pointer(NULL)); + ETK_PROPERTY_OBJECT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_object(NULL)); menu_item_type->property_set = _etk_menu_item_property_set; menu_item_type->property_get = _etk_menu_item_property_get; @@ -332,7 +332,7 @@ sizeof(Etk_Menu_Item_Image), NULL, NULL); etk_type_property_add(menu_item_image_type, "image", ETK_MENU_ITEM_IMAGE_PROPERTY, - ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_pointer(NULL)); + ETK_PROPERTY_OBJECT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_object(NULL)); menu_item_image_type->property_set = _etk_menu_item_image_property_set; menu_item_image_type->property_get = _etk_menu_item_image_property_get; @@ -509,8 +509,8 @@ menu_item_radio_type = etk_type_new("Etk_Menu_Item_Radio", ETK_MENU_ITEM_CHECK_TYPE, sizeof(Etk_Menu_Item_Radio), ETK_CONSTRUCTOR(_etk_menu_item_radio_constructor), ETK_DESTRUCTOR(_etk_menu_item_radio_destructor)); - etk_type_property_add(menu_item_radio_type, "group", ETK_MENU_ITEM_GROUP_PROPERTY, ETK_PROPERTY_POINTER, - ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_pointer(NULL)); + etk_type_property_add(menu_item_radio_type, "group", ETK_MENU_ITEM_GROUP_PROPERTY, + ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_pointer(NULL)); menu_item_radio_type->property_set = _etk_menu_item_radio_property_set; menu_item_radio_type->property_get = _etk_menu_item_radio_property_get; @@ -725,7 +725,7 @@ etk_menu_item_label_set(menu_item, etk_property_value_string_get(value)); break; case ETK_MENU_ITEM_SUBMENU_PROPERTY: - etk_menu_item_submenu_set(menu_item, ETK_MENU(etk_property_value_pointer_get(value))); + etk_menu_item_submenu_set(menu_item, ETK_MENU(etk_property_value_object_get(value))); break; default: break; @@ -746,7 +746,7 @@ etk_property_value_string_set(value, menu_item->label); break; case ETK_MENU_ITEM_SUBMENU_PROPERTY: - etk_property_value_pointer_set(value, menu_item->submenu); + etk_property_value_object_set(value, ETK_OBJECT(menu_item->submenu)); break; default: break; @@ -764,7 +764,7 @@ switch (property_id) { case ETK_MENU_ITEM_IMAGE_PROPERTY: - etk_menu_item_image_set(image_item, etk_property_value_pointer_get(value)); + etk_menu_item_image_set(image_item, ETK_IMAGE(etk_property_value_object_get(value))); break; default: break; @@ -782,7 +782,7 @@ switch (property_id) { case ETK_MENU_ITEM_IMAGE_PROPERTY: - etk_property_value_pointer_set(value, menu_item->left_widget); + etk_property_value_object_set(value, ETK_OBJECT(menu_item->left_widget)); break; default: break; =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_menu_shell.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- etk_menu_shell.c 21 Aug 2007 15:04:54 -0000 1.10 +++ etk_menu_shell.c 28 Aug 2007 20:06:32 -0000 1.11 @@ -45,9 +45,9 @@ ETK_CONSTRUCTOR(_etk_menu_shell_constructor), ETK_DESTRUCTOR(_etk_menu_shell_destructor)); _etk_menu_shell_signals[ETK_MENU_SHELL_ITEM_ADDED_SIGNAL] = etk_signal_new("item-added", - menu_shell_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL); + menu_shell_type, -1, etk_marshaller_VOID__OBJECT, NULL, NULL); _etk_menu_shell_signals[ETK_MENU_SHELL_ITEM_REMOVED_SIGNAL] = etk_signal_new("item-removed", - menu_shell_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL); + menu_shell_type, -1, etk_marshaller_VOID__OBJECT, NULL, NULL); } return menu_shell_type; =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_property.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- etk_property.c 21 Aug 2007 15:04:55 -0000 1.12 +++ etk_property.c 28 Aug 2007 20:06:32 -0000 1.13 @@ -80,7 +80,7 @@ return; if (value->type == ETK_PROPERTY_STRING) - free(value->value->string_value); + free(value->value.string_value); value->type = ETK_PROPERTY_NONE; } @@ -91,7 +91,6 @@ void etk_property_value_delete(Etk_Property_Value *value) { etk_property_value_clear(value); - if (value) free(value->value); free(value); } @@ -115,7 +114,6 @@ { Etk_Property_Value *new_value; new_value = malloc(sizeof(Etk_Property_Value)); - new_value->value = malloc(sizeof(Etk_Property_Value_Value)); new_value->type = ETK_PROPERTY_NONE; return new_value; } @@ -246,6 +244,19 @@ } /** + * @brief Creates a new object property value + * @param value the value of the new property value + * @return Returns the new property value + */ +Etk_Property_Value *etk_property_value_object(Etk_Object *value) +{ + Etk_Property_Value *new_value; + new_value = etk_property_value_new(); + etk_property_value_object_set(new_value, value); + return new_value; +} + +/** * @brief Creates a new pointer property value * @param value the value of the new property value * @return Returns the new property value @@ -351,6 +362,13 @@ etk_property_value_long_set(property_value, value); break; } + case ETK_PROPERTY_OBJECT: + { + Etk_Object *value; + value = va_arg(*arg, Etk_Object *); + etk_property_value_object_set(property_value, value); + break; + } case ETK_PROPERTY_POINTER: { void *value; @@ -381,7 +399,7 @@ return; etk_property_value_clear(property_value); - property_value->value->int_value = value; + property_value->value.int_value = value; property_value->type = ETK_PROPERTY_INT; } @@ -396,7 +414,7 @@ return; etk_property_value_clear(property_value); - property_value->value->bool_value = value; + property_value->value.bool_value = value; property_value->type = ETK_PROPERTY_BOOL; } @@ -411,7 +429,7 @@ return; etk_property_value_clear(property_value); - property_value->value->char_value = value; + property_value->value.char_value = value; property_value->type = ETK_PROPERTY_CHAR; } @@ -426,7 +444,7 @@ return; etk_property_value_clear(property_value); - property_value->value->float_value = value; + property_value->value.float_value = value; property_value->type = ETK_PROPERTY_FLOAT; } @@ -441,7 +459,7 @@ return; etk_property_value_clear(property_value); - property_value->value->double_value = value; + property_value->value.double_value = value; property_value->type = ETK_PROPERTY_DOUBLE; } @@ -456,7 +474,7 @@ return; etk_property_value_clear(property_value); - property_value->value->short_value = value; + property_value->value.short_value = value; property_value->type = ETK_PROPERTY_SHORT; } @@ -471,11 +489,26 @@ return; etk_property_value_clear(property_value); - property_value->value->long_value = value; + property_value->value.long_value = value; property_value->type = ETK_PROPERTY_LONG; } /** + * @brief Sets the object value of a property value + * @param property_value a property value + * @param value the value to set + */ +void etk_property_value_object_set(Etk_Property_Value *property_value, Etk_Object *value) +{ + if (!property_value) + return; + + etk_property_value_clear(property_value); + property_value->value.object_value = value; + property_value->type = ETK_PROPERTY_OBJECT; +} + +/** * @brief Sets the pointer value of a property value * @param property_value a property value * @param value the value to set @@ -486,7 +519,7 @@ return; etk_property_value_clear(property_value); - property_value->value->pointer_value = value; + property_value->value.pointer_value = value; property_value->type = ETK_PROPERTY_POINTER; } @@ -502,9 +535,9 @@ etk_property_value_clear(property_value); if (value) - property_value->value->string_value = strdup(value); + property_value->value.string_value = strdup(value); else - property_value->value->string_value = NULL; + property_value->value.string_value = NULL; property_value->type = ETK_PROPERTY_STRING; } @@ -542,6 +575,9 @@ case ETK_PROPERTY_LONG: *((long *)value_location) = etk_property_value_long_get(value); break; + case ETK_PROPERTY_OBJECT: + *((Etk_Object **)value_location) = etk_property_value_object_get(value); + break; case ETK_PROPERTY_POINTER: *((void **)value_location) = etk_property_value_pointer_get(value); break; @@ -562,7 +598,7 @@ { if (!value || value->type != ETK_PROPERTY_INT) return 0; - return value->value->int_value; + return value->value.int_value; } /** @@ -574,7 +610,7 @@ { if (!value || value->type != ETK_PROPERTY_BOOL) return ETK_FALSE; - return value->value->bool_value; + return value->value.bool_value; } /** @@ -586,7 +622,7 @@ { if (!value || value->type != ETK_PROPERTY_CHAR) return 0; - return value->value->char_value; + return value->value.char_value; } /** @@ -598,7 +634,7 @@ { if (!value || value->type != ETK_PROPERTY_FLOAT) return 0.0; - return value->value->float_value; + return value->value.float_value; } /** @@ -610,7 +646,7 @@ { if (!value || value->type != ETK_PROPERTY_DOUBLE) return 0.0; - return value->value->double_value; + return value->value.double_value; } /** @@ -622,7 +658,7 @@ { if (!value || value->type != ETK_PROPERTY_SHORT) return 0; - return value->value->short_value; + return value->value.short_value; } /** @@ -634,7 +670,19 @@ { if (!value || value->type != ETK_PROPERTY_LONG) return 0; - return value->value->long_value; + return value->value.long_value; +} + +/** + * @brief Gets the object value of the property value + * @param value a value + * @return Returns the object value of the property value + */ +Etk_Object *etk_property_value_object_get(Etk_Property_Value *value) +{ + if (!value || value->type != ETK_PROPERTY_OBJECT) + return NULL; + return value->value.object_value; } /** @@ -646,7 +694,7 @@ { if (!value || value->type != ETK_PROPERTY_POINTER) return NULL; - return value->value->pointer_value; + return value->value.pointer_value; } /** @@ -658,7 +706,7 @@ { if (!value || value->type != ETK_PROPERTY_STRING) return NULL; - return value->value->string_value; + return value->value.string_value; } /** @} */ =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_property.h,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- etk_property.h 27 Jul 2007 16:24:14 -0000 1.11 +++ etk_property.h 28 Aug 2007 20:06:32 -0000 1.12 @@ -23,6 +23,7 @@ ETK_PROPERTY_DOUBLE, /**< The value of the property is a double */ ETK_PROPERTY_SHORT, /**< The value of the property is a short */ ETK_PROPERTY_LONG, /**< The value of the property is a long */ + ETK_PROPERTY_OBJECT, /**< The value of the property is an object (Etk_Object *) */ ETK_PROPERTY_POINTER, /**< The value of the property is a pointer (void *) */ ETK_PROPERTY_STRING, /**< The value of the property is a string (char *) */ ETK_PROPERTY_OTHER /**< Used when none of the above type can be used. The property can't have a default @@ -68,9 +69,11 @@ * @structinfo */ -typedef struct Etk_Property_Value_Value Etk_Property_Value_Value; -struct Etk_Property_Value_Value +struct Etk_Property_Value { + /* private: */ + union + { int int_value; Etk_Bool bool_value; char char_value; @@ -78,14 +81,10 @@ double double_value; short short_value; long long_value; + Etk_Object *object_value; void *pointer_value; char *string_value; -}; - -struct Etk_Property_Value -{ - /* private: */ - Etk_Property_Value_Value *value; + } value; Etk_Property_Type type; }; @@ -107,6 +106,7 @@ Etk_Property_Value *etk_property_value_double(double value); Etk_Property_Value *etk_property_value_short(short value); Etk_Property_Value *etk_property_value_long(long value); +Etk_Property_Value *etk_property_value_object(Etk_Object *value); Etk_Property_Value *etk_property_value_pointer(void *value); Etk_Property_Value *etk_property_value_string(const char *value); @@ -119,6 +119,7 @@ void etk_property_value_double_set(Etk_Property_Value *property_value, double value); void etk_property_value_short_set(Etk_Property_Value *property_value, short value); void etk_property_value_long_set(Etk_Property_Value *property_value, long value); +void etk_property_value_object_set(Etk_Property_Value *property_value, Etk_Object *value); void etk_property_value_pointer_set(Etk_Property_Value *property_value, void *value); void etk_property_value_string_set(Etk_Property_Value *property_value, const char *value); @@ -130,6 +131,7 @@ double etk_property_value_double_get(Etk_Property_Value *value); short etk_property_value_short_get(Etk_Property_Value *value); long etk_property_value_long_get(Etk_Property_Value *value); +Etk_Object *etk_property_value_object_get(Etk_Property_Value *value); void *etk_property_value_pointer_get(Etk_Property_Value *value); const char *etk_property_value_string_get(Etk_Property_Value *value); =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_toplevel.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- etk_toplevel.c 21 Aug 2007 15:04:55 -0000 1.7 +++ etk_toplevel.c 28 Aug 2007 20:06:32 -0000 1.8 @@ -54,7 +54,7 @@ etk_type_property_add(toplevel_type, "evas", ETK_TOPLEVEL_EVAS_PROPERTY, ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE, etk_property_value_pointer(NULL)); etk_type_property_add(toplevel_type, "focused-widget", ETK_TOPLEVEL_FOCUSED_WIDGET_PROPERTY, - ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_pointer(NULL)); + ETK_PROPERTY_OBJECT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_object(NULL)); toplevel_type->property_set = _etk_toplevel_property_set; toplevel_type->property_get = _etk_toplevel_property_get; @@ -327,7 +327,7 @@ switch (property_id) { case ETK_TOPLEVEL_FOCUSED_WIDGET_PROPERTY: - etk_toplevel_focused_widget_set(toplevel, ETK_WIDGET(etk_property_value_pointer_get(value))); + etk_toplevel_focused_widget_set(toplevel, ETK_WIDGET(etk_property_value_object_get(value))); break; default: break; @@ -348,7 +348,7 @@ etk_property_value_pointer_set(value, toplevel->evas); break; case ETK_TOPLEVEL_FOCUSED_WIDGET_PROPERTY: - etk_property_value_pointer_set(value, toplevel->focused_widget); + etk_property_value_object_set(value, ETK_OBJECT(toplevel->focused_widget)); break; default: break; =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_widget.c,v retrieving revision 1.119 retrieving revision 1.120 diff -u -3 -r1.119 -r1.120 --- etk_widget.c 21 Aug 2007 15:04:55 -0000 1.119 +++ etk_widget.c 28 Aug 2007 20:06:32 -0000 1.120 @@ -229,13 +229,13 @@ widget_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL); etk_type_property_add(widget_type, "parent", ETK_WIDGET_PARENT_PROPERTY, - ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_pointer(NULL)); + ETK_PROPERTY_OBJECT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_object(NULL)); etk_type_property_add(widget_type, "theme-file", ETK_WIDGET_THEME_FILE_PROPERTY, ETK_PROPERTY_STRING, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_string(NULL)); etk_type_property_add(widget_type, "theme-group", ETK_WIDGET_THEME_GROUP_PROPERTY, ETK_PROPERTY_STRING, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_string(NULL)); etk_type_property_add(widget_type, "theme-parent", ETK_WIDGET_THEME_PARENT_PROPERTY, - ETK_PROPERTY_POINTER, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_pointer(NULL)); + ETK_PROPERTY_OBJECT, ETK_PROPERTY_READABLE_WRITABLE, etk_property_value_object(NULL)); etk_type_property_add(widget_type, "padding", ETK_WIDGET_PADDING_PROPERTY, ETK_PROPERTY_OTHER, ETK_PROPERTY_NO_ACCESS, NULL); etk_type_property_add(widget_type, "geometry", ETK_WIDGET_GEOMETRY_PROPERTY, @@ -2056,7 +2056,7 @@ switch (property_id) { case ETK_WIDGET_PARENT_PROPERTY: - etk_widget_parent_set(widget, ETK_WIDGET(etk_property_value_pointer_get(value))); + etk_widget_parent_set(widget, ETK_WIDGET(etk_property_value_object_get(value))); break; case ETK_WIDGET_THEME_FILE_PROPERTY: etk_widget_theme_file_set(widget, etk_property_value_string_get(value)); @@ -2065,7 +2065,7 @@ etk_widget_theme_group_set(widget, etk_property_value_string_get(value)); break; case ETK_WIDGET_THEME_PARENT_PROPERTY: - etk_widget_theme_parent_set(widget, ETK_WIDGET(etk_property_value_pointer_get(value))); + etk_widget_theme_parent_set(widget, ETK_WIDGET(etk_property_value_object_get(value))); break; case ETK_WIDGET_REQUESTED_WIDTH_PROPERTY: etk_widget_size_request_set(widget, etk_property_value_int_get(value), widget->requested_size.h); @@ -2117,7 +2117,7 @@ switch (property_id) { case ETK_WIDGET_PARENT_PROPERTY: - etk_property_value_pointer_set(value, ETK_OBJECT(widget->parent)); + etk_property_value_object_set(value, ETK_OBJECT(widget->parent)); break; case ETK_WIDGET_THEME_FILE_PROPERTY: etk_property_value_string_set(value, widget->theme_file); @@ -2126,7 +2126,7 @@ etk_property_value_string_set(value, widget->theme_group); break; case ETK_WIDGET_THEME_PARENT_PROPERTY: - etk_property_value_pointer_set(value, widget->theme_parent); + etk_property_value_object_set(value, ETK_OBJECT(widget->theme_parent)); break; case ETK_WIDGET_REQUESTED_WIDTH_PROPERTY: etk_property_value_int_set(value, widget->requested_size.w); ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs