/* Called when the iconbox is pressed by the mouse */ static Etk_Bool _etk_test_iconbox_mouse_down_cb(Etk_Object *object, Etk_Event_Mouse_Up *event, void *data) { Etk_Iconbox *iconbox; Etk_Iconbox_Icon *icon; Etk_String *new_folder; char *parent; if (!(iconbox = ETK_ICONBOX(object))) return ETK_TRUE; if (event->button != 1 || !(event->flags & ETK_MOUSE_DOUBLE_CLICK) || (event->flags & ETK_MOUSE_TRIPLE_CLICK)) return ETK_TRUE; if (!(icon = etk_iconbox_icon_get_at_xy(iconbox, event->canvas.x, event->canvas.y, ETK_FALSE, ETK_TRUE, ETK_TRUE))) return ETK_TRUE; if (!strcmp(etk_iconbox_icon_label_get(icon), "..")) { parent = ecore_file_dir_get(etk_string_get(_etk_test_iconbox_current_folder)); _etk_test_iconbox_folder_set(iconbox, parent); free(parent); } else { if (etk_string_length_get(_etk_test_iconbox_current_folder) == 1) new_folder = etk_string_new_printf("/%s", etk_iconbox_icon_label_get(icon)); else new_folder = etk_string_new_printf("%s/%s", etk_string_get(_etk_test_iconbox_current_folder), etk_iconbox_icon_label_get(icon)); _etk_test_iconbox_folder_set(iconbox, etk_string_get(new_folder)); etk_object_destroy(ETK_OBJECT(new_folder)); } return ETK_TRUE; }
void image_browser_populate(void) { Eina_List *l, *images; char buf[4096]; etk_iconbox_clear(ETK_ICONBOX(UI_ImageBrowserIconbox)); etk_iconbox_freeze(ETK_ICONBOX(UI_ImageBrowserIconbox)); images = l = edje_edit_images_list_get(edje_o); while (l) { snprintf(buf,4096,"images/%d",edje_edit_image_id_get(edje_o, (char*)l->data)); etk_iconbox_append(ETK_ICONBOX(UI_ImageBrowserIconbox), Cur.edj_temp_name->string, buf, (char*)l->data); l = l->next; } edje_edit_string_list_free(images); etk_iconbox_thaw(ETK_ICONBOX(UI_ImageBrowserIconbox)); }
void image_browser_update(void) { const char *pi; char buf[4096]; Etk_Iconbox_Icon *icon; if (ImageBroserUpdate) { //window title snprintf(buf, 4096, "Choose image for part \"%s\" state: \"%s\"",Cur.part->string, Cur.state->string); etk_window_title_set(ETK_WINDOW(UI_ImageBrowserWin), buf); //iconbox etk_iconbox_unselect_all(ETK_ICONBOX(UI_ImageBrowserIconbox)); pi = edje_edit_state_image_get(edje_o, Cur.part->string, Cur.state->string); if (pi) { icon = etk_iconbox_icon_get_by_label( ETK_ICONBOX(UI_ImageBrowserIconbox), pi); etk_iconbox_icon_select(icon); } //preview //~ snprintf(buf, 4096, "images/%d", edje_edit_image_id_get(edje_o, pi)); //~ printf("IM: %s\n", buf); //~ etk_image_set_from_file(UI_ImageBrowserPreview, Cur.edj_temp_name->string, buf); //~ edje_edit_string_free(pi); //int w, h; //etk_image_size_get (etk_image_new_from_file(icon->filename, icon->edje_group), &w, &h); //printf("W: %d H: %d (%d)\n", w, h, etk_image_new_from_file(icon->filename, icon->edje_group)); //etk_label_set(UI_ImageBrowserSizeLabel, "ciccio"); } else { etk_window_title_set(ETK_WINDOW(UI_ImageBrowserWin), "Image Browser"); } }
/* Creates the window for the iconbox test */ void etk_test_iconbox_window_create(void *data) { Etk_Widget *iconbox; if (win) { etk_widget_show_all(ETK_WIDGET(win)); return; } win = etk_window_new(); etk_window_title_set(ETK_WINDOW(win), "Etk Iconbox Test"); etk_window_resize(ETK_WINDOW(win), 600, 330); etk_signal_connect_by_code(ETK_WINDOW_DELETE_EVENT_SIGNAL, ETK_OBJECT(win), ETK_CALLBACK(etk_window_hide_on_delete), NULL); iconbox = etk_iconbox_new(); etk_iconbox_emblem_position_set(ETK_ICONBOX(iconbox), ETK_ICONBOX_EMBLEM_POSITION_TL); etk_container_add(ETK_CONTAINER(win), iconbox); etk_signal_connect_by_code(ETK_WIDGET_MOUSE_DOWN_SIGNAL, ETK_OBJECT(iconbox), ETK_CALLBACK(_etk_test_iconbox_mouse_down_cb), NULL); _etk_test_iconbox_folder_set(ETK_ICONBOX(iconbox), NULL); etk_widget_show_all(win); }