/* Sets the property whose id is "property_id" to the value "value" */ static void _etk_table_property_set(Etk_Object *object, int property_id, Etk_Property_Value *value) { Etk_Table *table; if (!(table = ETK_TABLE(object)) || !value) return; switch (property_id) { case ETK_TABLE_NUM_COLS_PROPERTY: etk_table_resize(table, etk_property_value_int_get(value), table->num_rows); break; case ETK_TABLE_NUM_ROWS_PROPERTY: etk_table_resize(table, table->num_cols, etk_property_value_int_get(value)); break; case ETK_TABLE_HOMOGENEOUS_PROPERTY: etk_table_homogeneous_set(table, etk_property_value_int_get(value)); break; default: break; } }
void evolve_gui_general_table_populate(Evolve_Widget *widget) { Etk_Widget *label; Etk_Widget *entry; Etk_Type *type; Eina_List *l, *list = NULL; char *str; int i = 2; if (!widget || !widget->type || !(type = evolve_widget_type_to_etk(widget->type))) return; etk_type_property_list(type, &list); etk_table_resize(ETK_TABLE(_evolve_gui_gen_table), 0, 0); etk_table_resize(ETK_TABLE(_evolve_gui_gen_table), 2, eina_list_count(list) + 2); label = etk_label_new("Class:"); entry = etk_entry_new(); etk_entry_text_set(ETK_ENTRY(entry), type->name); etk_widget_disabled_set(entry, ETK_TRUE); etk_table_attach_default(ETK_TABLE(_evolve_gui_gen_table), label, 0, 0, 0, 0); etk_table_attach_default(ETK_TABLE(_evolve_gui_gen_table), entry, 1, 1, 0, 0); label = etk_label_new("Name:"); entry = etk_entry_new(); etk_entry_text_set(ETK_ENTRY(entry), widget->name); etk_table_attach_default(ETK_TABLE(_evolve_gui_gen_table), label, 0, 0, 1, 1); etk_table_attach_default(ETK_TABLE(_evolve_gui_gen_table), entry, 1, 1, 1, 1); for (l = list; l; l = l->next) { Evolve_Property *prop; Evolve_Property *eprop; Evolve_Property *p; Etk_String *value; Etk_Widget *vwidget; if (!(prop = l->data)) continue; str = evolve_util_string_humanize(prop->name); label = etk_label_new(str); free(str); eprop = evolve_widget_property_get(widget, prop->name); if (eprop && eprop->default_value) p = eprop; else p = prop; switch(prop->type) { case EVOLVE_PROPERTY_INT: value = etk_string_new_printf("%d", evolve_property_value_int_get(p->default_value)); vwidget = etk_spinner_new(0, 9999, evolve_property_value_int_get(p->default_value), 1, 10); etk_object_data_set_full(ETK_OBJECT(vwidget), "prop", p, NULL); etk_object_data_set_full(ETK_OBJECT(vwidget), "widget", widget, NULL); etk_signal_connect("value-changed", ETK_OBJECT(vwidget), ETK_CALLBACK(evolve_gui_property_spinner_value_changed_cb), NULL); break; case EVOLVE_PROPERTY_BOOL: value = etk_string_new_printf("%d", evolve_property_value_bool_get(p->default_value)); vwidget = etk_combobox_new_default(); { Etk_Combobox_Item *item; item = etk_combobox_item_append(ETK_COMBOBOX(vwidget), "True"); if (evolve_property_value_bool_get(p->default_value)) etk_combobox_active_item_set(ETK_COMBOBOX(vwidget), item); item = etk_combobox_item_append(ETK_COMBOBOX(vwidget), "False"); if (!evolve_property_value_bool_get(p->default_value)) etk_combobox_active_item_set(ETK_COMBOBOX(vwidget), item); } break; case EVOLVE_PROPERTY_CHAR: value = etk_string_new_printf("%c", evolve_property_value_char_get(p->default_value)); vwidget = etk_entry_new(); etk_entry_text_set(ETK_ENTRY(vwidget), etk_string_get(value)); etk_object_data_set_full(ETK_OBJECT(vwidget), "prop", p, NULL); etk_signal_connect("text-changed", ETK_OBJECT(vwidget), ETK_CALLBACK(evolve_gui_property_entry_text_changed_cb), widget); break; case EVOLVE_PROPERTY_FLOAT: value = etk_string_new_printf("%f", evolve_property_value_float_get(p->default_value)); vwidget = etk_spinner_new(0.0, 9999.0, evolve_property_value_float_get(p->default_value), 0.1, 1.0); etk_spinner_digits_set(ETK_SPINNER(vwidget), 1); etk_object_data_set_full(ETK_OBJECT(vwidget), "prop", p, NULL); etk_object_data_set_full(ETK_OBJECT(vwidget), "widget", widget, NULL); etk_signal_connect("value-changed", ETK_OBJECT(vwidget), ETK_CALLBACK(evolve_gui_property_spinner_value_changed_cb), NULL); break; case EVOLVE_PROPERTY_DOUBLE: value = etk_string_new_printf("%g", evolve_property_value_double_get(p->default_value)); vwidget = etk_spinner_new(0.0, 9999.0, evolve_property_value_double_get(p->default_value), 0.1, 1.0); etk_spinner_digits_set(ETK_SPINNER(vwidget), 1); etk_object_data_set_full(ETK_OBJECT(vwidget), "prop", p, NULL); etk_object_data_set_full(ETK_OBJECT(vwidget), "widget", widget, NULL); etk_signal_connect("value-changed", ETK_OBJECT(vwidget), ETK_CALLBACK(evolve_gui_property_spinner_value_changed_cb), NULL); break; case EVOLVE_PROPERTY_SHORT: value = etk_string_new_printf("%d", evolve_property_value_short_get(p->default_value)); vwidget = etk_spinner_new(0, 9999, evolve_property_value_short_get(p->default_value), 1, 10); etk_object_data_set_full(ETK_OBJECT(vwidget), "prop", p, NULL); etk_object_data_set_full(ETK_OBJECT(vwidget), "widget", widget, NULL); etk_signal_connect("value-changed", ETK_OBJECT(vwidget), ETK_CALLBACK(evolve_gui_property_spinner_value_changed_cb), NULL); break; case EVOLVE_PROPERTY_LONG: value = etk_string_new_printf("%li", evolve_property_value_long_get(p->default_value)); vwidget = etk_spinner_new(0, 9999, evolve_property_value_long_get(p->default_value), 1, 10); etk_object_data_set_full(ETK_OBJECT(vwidget), "prop", p, NULL); etk_object_data_set_full(ETK_OBJECT(vwidget), "widget", widget, NULL); etk_signal_connect("value-changed", ETK_OBJECT(vwidget), ETK_CALLBACK(evolve_gui_property_spinner_value_changed_cb), NULL); break; case EVOLVE_PROPERTY_POINTER: value = etk_string_new_printf("cant cast PROPERTY_POINTER"); vwidget = etk_entry_new(); etk_entry_text_set(ETK_ENTRY(vwidget), etk_string_get(value)); etk_widget_disabled_set(vwidget, ETK_TRUE); break; case EVOLVE_PROPERTY_STRING: value = etk_string_new_printf("%s", evolve_property_value_string_get(p->default_value)); vwidget = etk_entry_new(); etk_entry_text_set(ETK_ENTRY(vwidget), etk_string_get(value)); etk_entry_text_set(ETK_ENTRY(vwidget), etk_string_get(value)); etk_object_data_set_full(ETK_OBJECT(vwidget), "prop", p, NULL); etk_signal_connect("text-changed", ETK_OBJECT(vwidget), ETK_CALLBACK(evolve_gui_property_entry_text_changed_cb), widget); break; default: value = etk_string_new_printf("cant determine value"); vwidget = etk_entry_new(); etk_entry_text_set(ETK_ENTRY(vwidget), etk_string_get(value)); break; } if (p == prop) { int type; type = prop->type; evolve_widget_property_set(widget, prop->name, etk_string_get(value), type); eprop = evolve_widget_property_get(widget, prop->name); } etk_object_destroy(ETK_OBJECT(value)); etk_table_attach_default(ETK_TABLE(_evolve_gui_gen_table), label, 0, 0, i, i); etk_table_attach_default(ETK_TABLE(_evolve_gui_gen_table), vwidget, 1, 1, i, i); ++i; } etk_widget_show_all(_evolve_gui_gen_table); }