Esempio n. 1
0
/**
 * @brief Sets the label of the frame
 * @param frame a frame
 * @param label the label to set
 */
void etk_frame_label_set(Etk_Frame *frame, const char *label)
{
   if (!frame)
      return;

   if (label != frame->label)
   {
      free(frame->label);
      frame->label = label ? strdup(label) : NULL;
   }

   if (!frame->label || frame->label[0] == '\0')
   {
      etk_widget_theme_part_text_set(ETK_WIDGET(frame), "etk.text.label", "");
      etk_widget_theme_signal_emit(ETK_WIDGET(frame), "etk,action,hide,label", ETK_TRUE);
   }
   else
   {
      etk_widget_theme_part_text_set(ETK_WIDGET(frame), "etk.text.label", frame->label);
      etk_widget_theme_signal_emit(ETK_WIDGET(frame), "etk,action,show,label", ETK_TRUE);
   }

   if (label != frame->label)
      etk_object_notify(ETK_OBJECT(frame), "label");
}
Esempio n. 2
0
/* Menu_Item_Ckeck: Initializes the check menu item */
static void _etk_menu_item_check_constructor(Etk_Menu_Item_Check *check_item)
{
   Etk_Menu_Item *menu_item;

   if (!(menu_item = ETK_MENU_ITEM(check_item)))
      return;

   check_item->active = ETK_FALSE;
   check_item->toggled_handler = _etk_menu_item_check_toggled_handler;
   check_item->active_set = _etk_menu_item_check_active_set;

   menu_item->left_widget = etk_widget_new(ETK_WIDGET_TYPE,
      "theme-group", ETK_IS_MENU_ITEM_RADIO(check_item) ? "radiobox" : "checkbox",
      "theme-parent", check_item, "pass-mouse-events", ETK_TRUE, "visible", ETK_TRUE, NULL);
   etk_widget_parent_set(menu_item->left_widget, ETK_WIDGET(menu_item));
   etk_widget_swallow_widget(ETK_WIDGET(menu_item), "etk.swallow.left_widget", menu_item->left_widget);

   etk_widget_theme_signal_emit(ETK_WIDGET(menu_item), "etk,action,show,left_widget", ETK_TRUE);
   if (check_item->active)
      etk_widget_theme_signal_emit(menu_item->left_widget, "etk,state,on", ETK_FALSE);
   else
      etk_widget_theme_signal_emit(menu_item->left_widget, "etk,state,off", ETK_FALSE);

   etk_signal_connect_by_code(ETK_WIDGET_REALIZED_SIGNAL, ETK_OBJECT(menu_item->left_widget),
      ETK_CALLBACK(_etk_menu_item_check_box_realized_cb), menu_item);
   etk_signal_connect_by_code(ETK_MENU_ITEM_ACTIVATED_SIGNAL, ETK_OBJECT(menu_item),
      ETK_CALLBACK(_etk_menu_item_check_activated_cb), menu_item);
}
Esempio n. 3
0
/**
 * @brief Sets the image of the menu-item. The image will be displayed on the left of the label
 * @param image_item an image menu-item
 * @param image the image to set (NULL to remove the image)
 */
void etk_menu_item_image_set(Etk_Menu_Item_Image *image_item, Etk_Image *image)
{
   Etk_Menu_Item *menu_item;
   Etk_Widget *image_widget;

   if (!(menu_item = ETK_MENU_ITEM(image_item)))
      return;

   if (menu_item->left_widget)
   {
      etk_widget_parent_set(menu_item->left_widget, NULL);
      menu_item->left_widget = NULL;
   }

   if ((image_widget = ETK_WIDGET(image)))
   {
      menu_item->left_widget = image_widget;
      etk_widget_parent_set(menu_item->left_widget, ETK_WIDGET(menu_item));
      etk_widget_pass_mouse_events_set(menu_item->left_widget, ETK_TRUE);

      etk_widget_swallow_widget(ETK_WIDGET(menu_item), "etk.swallow.left_widget", image_widget);
      etk_widget_theme_signal_emit(ETK_WIDGET(menu_item), "etk,action,show,left_widget", ETK_TRUE);
   }
   else
      etk_widget_theme_signal_emit(ETK_WIDGET(menu_item), "etk,action,hide,left_widget", ETK_TRUE);

   etk_widget_size_recalc_queue(ETK_WIDGET(menu_item));
}
Esempio n. 4
0
/**
 * @brief Sets the submenu of the menu-item: the submenu will be popped up when the menu-item is selected
 * @param menu_item a menu-item
 * @param submenu the submenu to attach to the menu-item
 */
void etk_menu_item_submenu_set(Etk_Menu_Item *menu_item, Etk_Menu *submenu)
{
   if (!menu_item || menu_item->submenu == submenu)
      return;

   if (menu_item->submenu)
   {
      menu_item->submenu->parent_item = NULL;
      etk_object_notify(ETK_OBJECT(menu_item->submenu), "parent-item");
   }
   menu_item->submenu = submenu;
   if (menu_item->submenu)
   {
      menu_item->submenu->parent_item = menu_item;
      etk_object_notify(ETK_OBJECT(menu_item->submenu), "parent-item");
   }

   if (menu_item->submenu)
      etk_widget_theme_signal_emit(ETK_WIDGET(menu_item), "etk,action,show,arrow", ETK_TRUE);
   else
      etk_widget_theme_signal_emit(ETK_WIDGET(menu_item), "etk,action,hide,arrow", ETK_TRUE);

   etk_widget_size_recalc_queue(ETK_WIDGET(menu_item));
   etk_object_notify(ETK_OBJECT(menu_item), "submenu");
}
Esempio n. 5
0
/* Default handler for the "unselected" signal */
static Etk_Bool _etk_menu_item_unselected_handler(Etk_Menu_Item *menu_item)
{
   if (!menu_item)
      return ETK_TRUE;
   etk_widget_theme_signal_emit(ETK_WIDGET(menu_item), "etk,state,unselected", ETK_FALSE);
   etk_widget_theme_signal_emit(ETK_WIDGET(menu_item->left_widget), "etk,state,unselected", ETK_FALSE);
   return ETK_TRUE;
}
Esempio n. 6
0
/* Default handler for the "activated" signal */
static Etk_Bool _etk_menu_item_activated_handler(Etk_Menu_Item *menu_item)
{
   if (!menu_item)
      return ETK_TRUE;

   /* TODO: rename signal */
   etk_widget_theme_signal_emit(ETK_WIDGET(menu_item), "etk,state,activate", ETK_FALSE);
   etk_widget_theme_signal_emit(ETK_WIDGET(menu_item->left_widget), "etk,state,activate", ETK_FALSE);
   return ETK_TRUE;
}
Esempio n. 7
0
/* Default handler for the "toggled" signal */
static Etk_Bool _etk_menu_item_check_toggled_handler(Etk_Menu_Item_Check *check_item)
{
   if (check_item && ETK_MENU_ITEM(check_item)->left_widget)
   {
      if (check_item->active)
         etk_widget_theme_signal_emit(ETK_MENU_ITEM(check_item)->left_widget, "etk,state,on", ETK_FALSE);
      else
         etk_widget_theme_signal_emit(ETK_MENU_ITEM(check_item)->left_widget, "etk,state,off", ETK_FALSE);
   }
   return ETK_TRUE;
}
Esempio n. 8
0
/**
 * @brief Sets whether the statusbar has a resize-grip. The resize-grip is a small grip at the right of the statusbar
 * that the user can use to resize the window
 * @param statusbar a statusbar
 * @param has_resize_grip if @a has_resize_grip is ETK_TRUE to make the statusbar have a resize-grip
 */
void etk_statusbar_has_resize_grip_set(Etk_Statusbar *statusbar, Etk_Bool has_resize_grip)
{
   if (!statusbar || statusbar->has_resize_grip == has_resize_grip)
      return;

   statusbar->has_resize_grip = has_resize_grip;
   if (statusbar->has_resize_grip)
      etk_widget_theme_signal_emit(ETK_WIDGET(statusbar), "etk,action,show,resize_grip", ETK_TRUE);
   else
      etk_widget_theme_signal_emit(ETK_WIDGET(statusbar), "etk,action,hide,resize_grip", ETK_TRUE);
   etk_object_notify(ETK_OBJECT(statusbar), "has-resize-grip");
}
Esempio n. 9
0
/* Called when the checkbox of the check item is realized */
static Etk_Bool _etk_menu_item_check_box_realized_cb(Etk_Object *object, void *data)
{
   Etk_Menu_Item *menu_item;

   if (!(menu_item = ETK_MENU_ITEM(data)) || !menu_item->left_widget)
      return ETK_TRUE;

   if (ETK_MENU_ITEM_CHECK(menu_item)->active)
      etk_widget_theme_signal_emit(menu_item->left_widget, "etk,state,on", ETK_FALSE);
   else
      etk_widget_theme_signal_emit(menu_item->left_widget, "etk,state,off", ETK_FALSE);

   return ETK_TRUE;
}
Esempio n. 10
0
/* Called when the statusbar is realized */
static Etk_Bool _etk_statusbar_realized_cb(Etk_Object *object, void *data)
{
   Etk_Statusbar *statusbar;
   Etk_Widget *statusbar_widget;

   if (!(statusbar = ETK_STATUSBAR(object)))
      return ETK_TRUE;
   statusbar_widget = ETK_WIDGET(statusbar);

   if (statusbar->has_resize_grip)
      etk_widget_theme_signal_emit(statusbar_widget, "etk,action,show,resize_grip", ETK_TRUE);
   else
      etk_widget_theme_signal_emit(statusbar_widget, "etk,action,hide,resize_grip", ETK_TRUE);
   _etk_statusbar_update(statusbar);

   if (statusbar_widget->theme_object)
   {
      edje_object_signal_callback_add(statusbar_widget->theme_object, "*", "etk.event.resize",
         _etk_statusbar_resize_grip_cb, object);
   }

   return ETK_TRUE;
}