Exemplo n.º 1
0
/* Recursively allocates the size of all the widgets */
static void _etk_main_size_allocate_recursive(Etk_Widget *widget, Etk_Bool is_top_level)
{
   Eina_List *l;
   Etk_Geometry geometry;

   if (!widget)
      return;

   if (is_top_level)
   {
      etk_toplevel_evas_position_get(ETK_TOPLEVEL(widget), &geometry.x, &geometry.y);
      etk_toplevel_size_get(ETK_TOPLEVEL(widget), &geometry.w, &geometry.h);
   }
   else
   {
      int left, right, top, bottom;

      etk_widget_geometry_get(widget, &geometry.x, &geometry.y, &geometry.w, &geometry.h);
      etk_widget_padding_get(widget, &left, &right, &top, &bottom);
      geometry.x -= left;
      geometry.y -= top;
      geometry.w += left + right;
      geometry.h += top + bottom;
   }
   etk_widget_size_allocate(widget, geometry);

   for (l = widget->children; l; l = l->next)
      _etk_main_size_allocate_recursive(ETK_WIDGET(l->data), ETK_FALSE);
}
Exemplo n.º 2
0
void etk_test_evas_object_window_create(void *data)
{
	Evas *evas;
	Evas_Object *edje_object;
	Evas_Object *evas_object;
	static Etk_Widget *window = NULL;
	Etk_Widget *vbox;
	Etk_Widget *frame;
	Etk_Widget *etk_evas_object;
	int w, h;

	if (window)
	{
		etk_widget_show_all(window);
		return;
	}

	window = etk_window_new();
  etk_signal_connect_by_code(ETK_WINDOW_DELETE_EVENT_SIGNAL, ETK_OBJECT(window), ETK_CALLBACK(etk_window_hide_on_delete), NULL);
	etk_window_title_set(ETK_WINDOW(window), "Etk-Evas Object Test");

	evas = etk_toplevel_evas_get(ETK_TOPLEVEL(window));

	vbox = etk_vbox_new(ETK_FALSE, 5);

	/* Add an edje object */
	frame = etk_frame_new("Edje Object");
	edje_object = edje_object_add(evas);
	edje_object_file_set(edje_object, PACKAGE_DATA_DIR"/test/clock.edj", "icon"); 
	edje_object_size_min_get(edje_object, &w, &h);
	edje_extern_object_min_size_set(edje_object, w, h);
	evas_object_resize(edje_object, w, h);
	etk_evas_object = etk_evas_object_new();
	etk_evas_object_set_object(ETK_EVAS_OBJECT(etk_evas_object), edje_object);
	etk_container_add(ETK_CONTAINER(frame), etk_evas_object);
	etk_box_append(ETK_BOX(vbox), frame, ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0);

	/* Add an evas rectangle */
	frame = etk_frame_new("Evas Object");
	evas_object = evas_object_rectangle_add(evas);
	evas_object_resize(evas_object, 150, 150);
	evas_object_color_set(evas_object, 150, 100, 100, 255);
	etk_evas_object = etk_evas_object_new();
	etk_evas_object_set_object(ETK_EVAS_OBJECT(etk_evas_object), evas_object);
	etk_container_add(ETK_CONTAINER(frame), etk_evas_object);
	etk_box_append(ETK_BOX(vbox), frame, ETK_BOX_END, ETK_BOX_EXPAND_FILL, 0);

	etk_container_add(ETK_CONTAINER(window), vbox);
	etk_widget_show_all(window);
}
Exemplo n.º 3
0
/**
 * @brief Runs an iteration of the main loop: it updates the widgets that need to be updated
 * @note You usually do not need to call it manually, you might want to use etk_main() instead
 */
void etk_main_iterate(void)
{
   Eina_List *l;
   Etk_Toplevel *toplevel;

   if (_etk_main_init_count <= 0)
      return;

   etk_object_purge();

   for (l = etk_toplevel_widgets_get(); l; l = l->next)
   {
      toplevel = ETK_TOPLEVEL(l->data);
      if (toplevel->need_update)
      {
         toplevel->need_update = ETK_FALSE;
         _etk_main_size_request_recursive(ETK_WIDGET(toplevel));
         _etk_main_size_allocate_recursive(ETK_WIDGET(toplevel), ETK_TRUE);
      }
   }
}