Пример #1
0
void evolve_gui_placeholder_replace(Evolve_Widget *parent, Evolve_Widget *child, Etk_Widget *placeholder)
{
   if (!parent || !parent->type || !child || !child->type || !placeholder)
     return;
   
   if (!strcmp(parent->type, "hbox") || !strcmp(parent->type, "vbox"))
     {
	int pos;
	Etk_Box_Group group;
	char *group_str;
	char pos_str[5];
	Evolve_Widget_Property *prop;
	
	etk_box_child_position_get(ETK_BOX(parent->widget), placeholder,
				   &group, &pos);
	
	group_str = evolve_widget_packing_property_to_str_convert("box", "group", group);
	prop = calloc(1, sizeof(Evolve_Widget_Property));
	prop->name = strdup("group");
	prop->value = group_str;
	prop->type = EVOLVE_WIDGET_PROP_INT;
	eina_hash_add(child->packing_props, "group", prop);
	
	prop = calloc(1, sizeof(Evolve_Widget_Property));
	snprintf(pos_str, sizeof(pos_str), "%d", pos);
	prop->name = strdup("position");
	prop->value = strdup(pos_str);
	prop->type = EVOLVE_WIDGET_PROP_INT;
	eina_hash_add(child->packing_props, "position", prop);
     }
   else if (!strcmp(parent->type, "toolbar"))
     {
	/* [TODO] [3] We are accessing the toolbar's internals, better way? */
	int pos;
	char pos_str[5];
	Evolve_Widget_Property *prop;
	
	etk_box_child_position_get(ETK_BOX(ETK_TOOLBAR(parent->widget)->box),
				   placeholder,
				   NULL, &pos);
	
	prop = calloc(1, sizeof(Evolve_Widget_Property));
	snprintf(pos_str, sizeof(pos_str), "%d", pos);
	prop->name = strdup("position");
	prop->value = strdup(pos_str);
	prop->type = EVOLVE_WIDGET_PROP_INT;
	eina_hash_add(child->packing_props, "position", prop);
     }
   else if (!strcmp(parent->type, "table"))
     {
	int la, ra, ta, ba;
	char la_str[5], ra_str[5], ta_str[5], ba_str[5];
	Evolve_Widget_Property *prop;
	
	etk_table_child_position_get(ETK_TABLE(parent->widget),
				   placeholder,
				   &la, &ra, &ta, &ba);
	
	prop = calloc(1, sizeof(Evolve_Widget_Property));
	snprintf(la_str, sizeof(la_str), "%d", la);
	prop->name = strdup("left_attach");
	prop->value = strdup(la_str);
	prop->type = EVOLVE_WIDGET_PROP_INT;
	eina_hash_add(child->packing_props, "left_attach", prop);
	
	prop = calloc(1, sizeof(Evolve_Widget_Property));
	snprintf(ra_str, sizeof(ra_str), "%d", ra);
	prop->name = strdup("right_attach");	
	prop->value = strdup(ra_str);
	prop->type = EVOLVE_WIDGET_PROP_INT;
	eina_hash_add(child->packing_props, "right_attach", prop);
	
	prop = calloc(1, sizeof(Evolve_Widget_Property));
	snprintf(ta_str, sizeof(ta_str), "%d", ta);
	prop->name = strdup("top_attach");	
	prop->value = strdup(ta_str);
	prop->type = EVOLVE_WIDGET_PROP_INT;
	eina_hash_add(child->packing_props, "top_attach", prop);
	
	prop = calloc(1, sizeof(Evolve_Widget_Property));
	snprintf(ba_str, sizeof(ba_str), "%d", ba);
	prop->name = strdup("bottom_attach");	
	prop->value = strdup(ba_str);
	prop->type = EVOLVE_WIDGET_PROP_INT;
	eina_hash_add(child->packing_props, "bottom_attach", prop);
     }
   else if (!strcmp(parent->type, "notebook"))
     {
	int pos;
	char pos_str[5];
	const char *label;
	Evolve_Widget_Property *prop;
	
	pos = etk_notebook_page_index_get(ETK_NOTEBOOK(parent->widget), placeholder);
	label = etk_notebook_page_tab_label_get(ETK_NOTEBOOK(parent->widget), pos);
	
	prop = calloc(1, sizeof(Evolve_Widget_Property));
	snprintf(pos_str, sizeof(pos_str), "%d", pos);
	prop->name = strdup("position");
	prop->value = strdup(pos_str);
	prop->type = EVOLVE_WIDGET_PROP_INT;
	eina_hash_add(child->packing_props, "position", prop);
		
	if (label)
	  {
	     prop = calloc(1, sizeof(Evolve_Widget_Property));
	     prop->name = strdup("tab_label");
	     prop->value = strdup(label);
	     prop->type = EVOLVE_WIDGET_PROP_STR;
	     eina_hash_add(child->packing_props, "tab_label", prop);
	  }
     }
   etk_container_remove(placeholder);
}
Пример #2
0
bool EtkBox::getChildPosition (EtkWidget &child, Etk_Box_Group &outGroup, int &outPos)
{
    return etk_box_child_position_get(ETK_BOX (_o), ETK_WIDGET (child.obj ()), &outGroup, &outPos);
}
Пример #3
0
/* Called when a widget is added to the toolbar's box */
static Etk_Bool _etk_toolbar_child_added_cb(Etk_Object *object, Etk_Widget *child, void *data)
{
   Etk_Toolbar *toolbar;

   if (!(toolbar = ETK_TOOLBAR(data)) || !child)
      return ETK_TRUE;

   /* Sets the style and the stock size if the new child is a tool-item */
   if (ETK_IS_TOOL_ITEM(child))
   {
      Etk_Button_Style button_style;

      switch (toolbar->style)
      {
         case ETK_TOOLBAR_ICON:
            button_style = ETK_BUTTON_ICON;
            break;
         case ETK_TOOLBAR_TEXT:
            button_style = ETK_BUTTON_TEXT;
            break;
         case ETK_TOOLBAR_BOTH_VERT:
            button_style = ETK_BUTTON_BOTH_VERT;
            break;
         case ETK_TOOLBAR_BOTH_HORIZ:
            button_style = ETK_BUTTON_BOTH_HORIZ;
            break;
         default:
            button_style = ETK_BUTTON_BOTH_VERT;
            break;
      }
      etk_button_style_set(ETK_BUTTON(child), button_style);
      etk_button_stock_size_set(ETK_BUTTON(child), toolbar->stock_size);
   }
   /* Reorientate the separators */
   else if (toolbar->reorientating
      && (((toolbar->orientation == ETK_TOOLBAR_HORIZ) && ETK_IS_VSEPARATOR(child))
         || ((toolbar->orientation == ETK_TOOLBAR_VERT) && ETK_IS_HSEPARATOR(child))))
   {
      Etk_Bool visible;
      Etk_Box_Fill_Policy policy;
      Etk_Box_Group group;
      int pos, padding;

      visible = etk_widget_is_visible(child);
      etk_box_child_position_get(ETK_BOX(toolbar->box), child, &group, &pos);
      etk_box_child_packing_get(ETK_BOX(toolbar->box), child, &policy, &padding);

      etk_object_destroy(ETK_OBJECT(child));
      if (toolbar->orientation == ETK_TOOLBAR_HORIZ)
         child = etk_vseparator_new();
      else
         child = etk_hseparator_new();

      etk_box_insert_at(ETK_BOX(toolbar->box), child, group, pos, policy, padding);
      if (visible)
         etk_widget_show(child);
   }

   if (etk_theme_group_exists(etk_widget_theme_file_get(ETK_WIDGET(toolbar)),
      etk_widget_theme_group_get(child), etk_widget_theme_group_get(ETK_WIDGET(toolbar))))
   {
      etk_widget_theme_parent_set(child, ETK_WIDGET(toolbar));
   }
   //etk_signal_emit(ETK_CONTAINER_CHILD_ADDED_SIGNAL, ETK_OBJECT(toolbar), child);

   return ETK_TRUE;
}