Exemple #1
0
/* 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");
   }
}
Exemple #4
0
/* 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);
}