Beispiel #1
0
/* Gets the list of the children of the toolbar */
Eina_List *_etk_toolbar_children_get(Etk_Container *container)
{
   Etk_Toolbar *toolbar;

   if (!(toolbar = ETK_TOOLBAR(container)))
      return NULL;
   return etk_container_children_get(ETK_CONTAINER(toolbar->box));
}
Beispiel #2
0
/* Removes the child from the toolbar */
void _etk_toolbar_child_remove(Etk_Container *container, Etk_Widget *widget)
{
   Etk_Toolbar *toolbar;

   if (!(toolbar = ETK_TOOLBAR(container)) || !widget)
      return;
   etk_container_remove(widget);
}
Beispiel #3
0
/* Adds a child to the toolbar */
void _etk_toolbar_child_add(Etk_Container *container, Etk_Widget *widget)
{
   Etk_Toolbar *toolbar;

   if (!(toolbar = ETK_TOOLBAR(container)) || !widget)
      return;
   etk_toolbar_append(toolbar, widget, ETK_BOX_START);
}
Beispiel #4
0
/* Calculates the ideal size of the toolbar */
static void _etk_toolbar_size_request(Etk_Widget *widget, Etk_Size *size)
{
   Etk_Toolbar *toolbar;

   if (!(toolbar = ETK_TOOLBAR(widget)) || !size)
      return;
   etk_widget_size_request(ETK_WIDGET(toolbar->box), size);
}
Beispiel #5
0
/* Resizes the toolbar to the allocated size */
static void _etk_toolbar_size_allocate(Etk_Widget *widget, Etk_Geometry geometry)
{
   Etk_Toolbar *toolbar;
   Etk_Size size;

   if (!(toolbar = ETK_TOOLBAR(widget)))
      return;

   etk_widget_size_request(toolbar->box, &size);
   geometry.w = ETK_MAX(geometry.w, size.w);
   etk_widget_size_allocate(ETK_WIDGET(toolbar->box), geometry);
}
Beispiel #6
0
/* Called when a widget is removed from the toolbar's box */
static Etk_Bool _etk_toolbar_child_removed_cb(Etk_Object *object, Etk_Widget *child, void *data)
{
   Etk_Toolbar *toolbar;

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

   if (etk_widget_theme_parent_get(child) == ETK_WIDGET(toolbar))
      etk_widget_theme_parent_set(child, NULL);
   etk_signal_emit(ETK_CONTAINER_CHILD_REMOVED_SIGNAL, ETK_OBJECT(toolbar), child);

   return ETK_TRUE;
}
Beispiel #7
0
/* Gets the value of the property whose id is "property_id" */
static void _etk_toolbar_property_get(Etk_Object *object, int property_id, Etk_Property_Value *value)
{
   Etk_Toolbar *toolbar;

   if (!(toolbar = ETK_TOOLBAR(object)) || !value)
      return;

   switch (property_id)
   {
      case ETK_TOOLBAR_ORIENTATION_PROPERTY:
         etk_property_value_int_set(value, toolbar->orientation);
         break;
      case ETK_TOOLBAR_STYLE_PROPERTY:
         etk_property_value_int_set(value, toolbar->style);
         break;
      case ETK_TOOLBAR_STOCK_SIZE_PROPERTY:
         etk_property_value_int_set(value, toolbar->stock_size);
         break;
      default:
         break;
   }
}
Beispiel #8
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);
}
Beispiel #9
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;
}