Enlightenment CVS committal

Author  : dj2
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/lib


Modified Files:
        Ewl.h.in Makefile.am ewl_menu_base.c ewl_menu_base.h 
Added Files:
        ewl_menu_item.c ewl_menu_item.h ewl_menu_separator.c 
        ewl_menu_separator.h 


Log Message:
- move the menu_item and menu_separator to their own files
- format/type check the menu_base code

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/Ewl.h.in,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -3 -r1.21 -r1.22
--- Ewl.h.in    10 Oct 2005 15:27:10 -0000      1.21
+++ Ewl.h.in    24 Oct 2005 03:35:29 -0000      1.22
@@ -307,6 +307,8 @@
 #include <ewl_spinner.h>
 #include <ewl_image.h>
 #include <ewl_spectrum.h>
+#include <ewl_menu_item.h>
+#include <ewl_menu_separator.h>
 #include <ewl_menu_base.h>
 #include <ewl_imenu.h>
 #include <ewl_menu.h>
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/Makefile.am,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- Makefile.am 10 Oct 2005 15:27:10 -0000      1.12
+++ Makefile.am 24 Oct 2005 03:35:29 -0000      1.13
@@ -44,6 +44,8 @@
        ewl_menu.h \
        ewl_menubar.h \
        ewl_menu_base.h \
+       ewl_menu_item.h \
+       ewl_menu_separator.h \
        ewl_misc.h \
        ewl_notebook.h \
        ewl_object.h \
@@ -106,6 +108,8 @@
        ewl_menu.c \
        ewl_menubar.c \
        ewl_menu_base.c \
+       ewl_menu_item.c \
+       ewl_menu_separator.c \
        ewl_misc.c \
        ewl_notebook.c \
        ewl_object.c \
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_menu_base.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- ewl_menu_base.c     23 Oct 2005 17:20:18 -0000      1.11
+++ ewl_menu_base.c     24 Oct 2005 03:35:29 -0000      1.12
@@ -11,30 +11,29 @@
  * Sets up the internal variables for the menu item and places the icon from
  * @a image and label from @a title in the menu item.
  */
-int ewl_menu_base_init(Ewl_Menu_Base * menu)
+int
+ewl_menu_base_init(Ewl_Menu_Base *menu)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
-
        DCHECK_PARAM_PTR_RET("menu", menu, FALSE);
 
        /*
         * Initialize the defaults of the inherited fields.
         */
-       ewl_menu_item_init(EWL_MENU_ITEM(menu));
+       if (!ewl_menu_item_init(EWL_MENU_ITEM(menu)))
+               DRETURN_INT(FALSE, DLEVEL_STABLE);
+
        ewl_widget_appearance_set(EWL_WIDGET(menu), "menu_base");
        ewl_widget_inherit(EWL_WIDGET(menu), "menu_base");
 
        ewl_callback_del(EWL_WIDGET(menu), EWL_CALLBACK_CLICKED,
-                        ewl_menu_item_clicked_cb);
-
+                                       ewl_menu_item_clicked_cb);
        ewl_callback_append(EWL_WIDGET(menu), EWL_CALLBACK_SELECT,
-                           ewl_menu_base_expand_cb, NULL);
-
+                                       ewl_menu_base_expand_cb, NULL);
        ewl_callback_append(EWL_WIDGET(menu), EWL_CALLBACK_DESELECT,
-                           ewl_menu_base_collapse_cb, NULL);
-
-       ewl_callback_append(EWL_WIDGET(menu), EWL_CALLBACK_DESTROY,
-                           ewl_menu_base_destroy_cb, NULL);
+                                       ewl_menu_base_collapse_cb, NULL);
+       ewl_callback_prepend(EWL_WIDGET(menu), EWL_CALLBACK_DESTROY,
+                                       ewl_menu_base_destroy_cb, NULL);
 
        /*
         * The popbox actually holds the children, and is simply added to the
@@ -58,294 +57,6 @@
        DRETURN_INT(TRUE, DLEVEL_STABLE);
 }
 
-/**
- * @return Returns a pointer to a new menu item on success, NULL on failure.
- * @brief Create a new menu item to place in a menu
- */
-Ewl_Widget *ewl_menu_item_new(void)
-{
-       Ewl_Menu_Item  *item;
-
-       DENTER_FUNCTION(DLEVEL_STABLE);
-
-       item = NEW(Ewl_Menu_Item, 1);
-       if (!item)
-               DRETURN_PTR(NULL, DLEVEL_STABLE);
-
-       ewl_menu_item_init(item);
-
-       DRETURN_PTR(EWL_WIDGET(item), DLEVEL_STABLE);
-}
-
-/**
- * @param item: the item to be initialized
- * @return Returns no value.
- * @brief Initialize the fields of a menu item to their defaults
- */
-int ewl_menu_item_init(Ewl_Menu_Item * item)
-{
-       DENTER_FUNCTION(DLEVEL_STABLE);
-
-       DCHECK_PARAM_PTR_RET("item", item, FALSE);
-
-       /*
-        * Initialize the inherited container fields.
-        */
-       if (!ewl_box_init(EWL_BOX(item)))
-               DRETURN_INT(FALSE, DLEVEL_STABLE);
-
-       ewl_box_orientation_set(EWL_BOX(item), EWL_ORIENTATION_HORIZONTAL);
-       ewl_widget_appearance_set(EWL_WIDGET(item), "menuitem");
-       ewl_widget_inherit(EWL_WIDGET(item), "menuitem");
-
-       ewl_object_fill_policy_set(EWL_OBJECT(item), EWL_FLAG_FILL_HFILL);
-
-       ewl_callback_append(EWL_WIDGET(item), EWL_CALLBACK_CONFIGURE,
-                           ewl_menu_item_configure_cb, NULL);
-       ewl_callback_append(EWL_WIDGET(item), EWL_CALLBACK_CLICKED,
-                           ewl_menu_item_clicked_cb, NULL);
-
-       /*
-        * Intercept mouse events this will cause callbacks to children of
-        * this widget.
-        */
-       ewl_container_callback_intercept(EWL_CONTAINER(item),
-                                        EWL_CALLBACK_SELECT);
-       ewl_container_callback_intercept(EWL_CONTAINER(item),
-                                        EWL_CALLBACK_DESELECT);
-
-       DRETURN_INT(TRUE, DLEVEL_STABLE);
-}
-
-/**
- * @return Returns the text currently used by a menu item
- * @param item: the menu item
- * @brief Get the text of a menu item
- */
-char *
-ewl_menu_item_text_get( Ewl_Menu_Item *item )
-{
-       if (item->text)
-               DRETURN_PTR(ewl_text_text_get(EWL_TEXT(item->text)), 
DLEVEL_STABLE);
-       DRETURN_PTR(NULL, DLEVEL_STABLE);
-}
-
-/**
- * @param item: the menu item of which to set the text
- * @param text: the text in string form
- * @brief Sets the text of a menu item
- */
-void
-ewl_menu_item_text_set( Ewl_Menu_Item *item, char *text )
-{
-       Ewl_Container *redirect;
-
-       DENTER_FUNCTION(DLEVEL_STABLE);
-       DCHECK_PARAM_PTR("item", item);
-
-       /*
-        * Save and restore after we've made our changes.
-        */
-       redirect = ewl_container_redirect_get(EWL_CONTAINER(item));
-       ewl_container_redirect_set(EWL_CONTAINER(item), NULL);
-
-       if (text) {
-
-               /*
-                * Setup the text object and add it to the menu.
-                */
-               if (!item->text) {
-                       item->text = ewl_text_new();
-                       ewl_container_child_append(EWL_CONTAINER(item),
-                                                  item->text);
-                       ewl_widget_show(item->text);
-               }
-
-               /*
-                * Set the request text.
-                */
-               if (item->text) {
-                       ewl_text_text_set(EWL_TEXT(item->text), text);
-                       if (!item->icon)
-                               ewl_menu_item_image_set(item, NULL);
-               }
-       }
-       else if (item->text) {
-               ewl_widget_destroy(item->text);
-               item->text = NULL;
-       }
-
-       ewl_container_redirect_set(EWL_CONTAINER(item), redirect);
-
-       DLEAVE_FUNCTION(DLEVEL_STABLE);
-}
-
-/**
- * @return Returns the image currently used by a menu item
- * @param item: the menu item
- * @brief Get the image of a menu item
- */
-char *
-ewl_menu_item_image_get(Ewl_Menu_Item *item)
-{
-       DENTER_FUNCTION(DLEVEL_STABLE);
-       DCHECK_PARAM_PTR_RET("item", item, NULL);
-
-       if (item->icon && ewl_widget_type_is(item->icon, "image"))
-               DRETURN_PTR(ewl_image_file_get(EWL_IMAGE(item->icon)), 
DLEVEL_STABLE);
-       DRETURN_PTR(NULL, DLEVEL_STABLE);
-}
-
-/**
- * @param item: the menu item
- * @param image: the image filename
- * @brief Set the image of a menu item
- */
-void
-ewl_menu_item_image_set( Ewl_Menu_Item *item, char *image )
-{
-       DENTER_FUNCTION(DLEVEL_STABLE);
-       DCHECK_PARAM_PTR("item", item);
-
-       /*
-        * Destroy the icon if it's the wrong type.
-        */
-       if (item->icon && (
-               (image && !ewl_widget_type_is(item->icon, "image")) ||          
         
-               (!image && !ewl_widget_type_is(item->icon, "spacer"))))  {
-               ewl_widget_destroy(item->icon);
-               item->icon = NULL;
-       }
-
-       /*
-        * Create the appropriate widget if necessary.
-        */
-       if (!item->icon) {
-               Ewl_Container *redirect;
-
-               /*
-                * Save the current redirect and override to avoid issues with
-                * submenus
-                */
-               redirect = ewl_container_redirect_get(EWL_CONTAINER(item));
-               ewl_container_redirect_set(EWL_CONTAINER(item), NULL);
-
-               /*
-                * Create the icon if one is requested, or a spacer if not, but
-                * there is text to be displayed.
-                */
-               if (image)
-                       item->icon = ewl_image_new();
-               else if (item->text)
-                       item->icon = ewl_spacer_new();
-
-               /*
-                * Setup display prperties on icon if created.
-                */
-               if (item->icon) {
-                       ewl_object_alignment_set(EWL_OBJECT(item->icon),
-                                                EWL_FLAG_ALIGN_CENTER);
-                       ewl_object_maximum_size_set(EWL_OBJECT(item->icon),
-                                                   20, 20);
-                       ewl_container_child_prepend(EWL_CONTAINER(item),
-                                                   item->icon);
-                       ewl_widget_show(item->icon);
-               }
-
-               ewl_container_redirect_set(EWL_CONTAINER(item), redirect);
-       }
-
-       if (image && item->icon)
-               ewl_image_file_set(EWL_IMAGE(item->icon), image, NULL);
-
-       DLEAVE_FUNCTION(DLEVEL_STABLE);
-}
-
-/**
- * @return Returns a new menu item separator on success, NULL on failure.
- * @brief Create a separator menu item
- */
-Ewl_Widget *ewl_menu_separator_new()
-{
-       Ewl_Menu_Separator *sep;
-
-       DENTER_FUNCTION(DLEVEL_STABLE);
-
-       sep = NEW(Ewl_Menu_Separator, 1);
-       if (!sep)
-               DRETURN_PTR(NULL, DLEVEL_STABLE);
-
-       ewl_menu_separator_init(sep);
-
-       DRETURN_PTR(EWL_WIDGET(sep), DLEVEL_STABLE);
-}
-
-/**
- * @param sep: the menu separator item to initialize
- * @return Returns no value.
- * @brief Initialize a menu separator item
- *
- * Sets up the internal fields of the menu separator item to
- * some sane defaults.
- */
-void ewl_menu_separator_init(Ewl_Menu_Separator *sep)
-{
-       Ewl_Widget *separator;
-
-       DENTER_FUNCTION(DLEVEL_STABLE);
-
-       DCHECK_PARAM_PTR("sep", sep);
-
-       ewl_menu_item_init(EWL_MENU_ITEM(sep));
-
-       separator = ewl_separator_new(EWL_ORIENTATION_HORIZONTAL);
-       if (!separator)
-               DRETURN(DLEVEL_STABLE);
-
-       ewl_container_child_append(EWL_CONTAINER(sep), separator);
-       ewl_widget_show(separator);
-
-       DLEAVE_FUNCTION(DLEVEL_STABLE);
-}
-
-void
-ewl_menu_item_configure_cb(Ewl_Widget *w, void *ev_data __UNUSED__,
-                                       void *user_data __UNUSED__)
-{
-       int x;
-       Ewl_Container *c;
-       Ewl_Widget *child;
-
-       DENTER_FUNCTION(DLEVEL_STABLE);
-
-       c = EWL_CONTAINER(w);
-       x = CURRENT_X(w);
-       ecore_list_goto_first(c->children);
-       while ((child = ecore_list_next(c->children))) {
-               int width;
-
-               width = ewl_object_preferred_w_get(EWL_OBJECT(child));
-               ewl_object_place(EWL_OBJECT(child), x, CURRENT_Y(w), width,
-                                CURRENT_H(w));
-               x += width;
-       }
-
-       DLEAVE_FUNCTION(DLEVEL_STABLE);
-}
-
-void
-ewl_menu_item_clicked_cb(Ewl_Widget *w, void *ev_data __UNUSED__,
-                                       void *user_data __UNUSED__)
-{
-       Ewl_Menu_Item *item = EWL_MENU_ITEM(w);
-       DENTER_FUNCTION(DLEVEL_STABLE);
-
-       if (item->inmenu)
-               ewl_widget_hide(item->inmenu);
-
-       DLEAVE_FUNCTION(DLEVEL_STABLE);
-}
-
 void
 ewl_menu_base_expand_cb(Ewl_Widget *w, void *ev_data __UNUSED__,
                                        void *user_data __UNUSED__)
@@ -356,6 +67,8 @@
        Ewl_Menu_Item *item = EWL_MENU_ITEM(w);
 
        DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("w", w);
+       DCHECK_TYPE("w", w, "widget");
 
        if (!menu->popup)
                DRETURN(DLEVEL_STABLE);
@@ -379,11 +92,10 @@
 
        pb = EWL_CONTAINER(menu->popbox);
 
-       ecore_list_goto_first(pb->children);
-
        /*
         * Give all the items in the submenu a reference to this popup.
         */
+       ecore_list_goto_first(pb->children);
        while ((child = ecore_list_next(pb->children))) {
                if (ewl_widget_type_is(child, "menuitem")) {
                        item = EWL_MENU_ITEM(child);
@@ -398,13 +110,15 @@
 }
 
 void
-ewl_menu_base_collapse_cb(Ewl_Widget * w, void *ev_data __UNUSED__,
+ewl_menu_base_collapse_cb(Ewl_Widget *w, void *ev_data __UNUSED__,
                                        void *user_data __UNUSED__)
 {
        Ewl_Menu_Base *menu;
        Ewl_Widget    *focused;
 
        DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("w", w);
+       DCHECK_TYPE("w", w, "widget");
 
        menu = EWL_MENU_BASE(w);
 
@@ -416,24 +130,30 @@
 }
 
 void
-ewl_menu_base_popup_hide_cb(Ewl_Widget * w __UNUSED__,
+ewl_menu_base_popup_hide_cb(Ewl_Widget *w __UNUSED__,
                        void *ev_data __UNUSED__, void *user_data)
 {
-       Ewl_Widget *ppop = user_data;
+       Ewl_Widget *ppop;
+
        DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("user_data", user_data);
 
+       ppop = user_data;
        ewl_widget_hide(ppop);
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
 void
-ewl_menu_base_popup_show_cb(Ewl_Widget * w __UNUSED__,
+ewl_menu_base_popup_show_cb(Ewl_Widget *w __UNUSED__,
                        void *ev_data __UNUSED__, void *user_data)
 {
-       Ewl_Widget *ppop = user_data;
+       Ewl_Widget *ppop;
+
        DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("user_data", user_data);
 
+       ppop = user_data;
        ewl_widget_show(ppop);
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
@@ -443,9 +163,11 @@
 ewl_menu_base_popbox_key_down_cb(Ewl_Widget *w __UNUSED__, void *ev_data, 
                                        void *user_data __UNUSED__)
 {
-       Ewl_Event_Key_Down *ev = ev_data;
-       DENTER_FUNCTION(DLEVEL_STABLE);
+       Ewl_Event_Key_Down *ev;
 
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       
+       ev = ev_data;
        printf("Menu item: %s\n", ev->keyname);
        if (!strcmp(ev->keyname, "Down")) {
                printf("Menu item down\n");
@@ -464,17 +186,19 @@
 }
 
 void
-ewl_menu_base_destroy_cb(Ewl_Widget * w, void *ev_data __UNUSED__,
+ewl_menu_base_destroy_cb(Ewl_Widget *w, void *ev_data __UNUSED__,
                                        void *user_data __UNUSED__)
 {
-       Ewl_Menu_Base      *menu;
+       Ewl_Menu_Base *menu;
 
        DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("w", w);
+       DCHECK_TYPE("w", w, "widget");
 
        menu = EWL_MENU_BASE(w);
-
        if (menu->popup)
                ewl_widget_destroy(menu->popup);
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
+
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_menu_base.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- ewl_menu_base.h     23 Oct 2005 17:20:18 -0000      1.6
+++ ewl_menu_base.h     24 Oct 2005 03:35:29 -0000      1.7
@@ -5,68 +5,17 @@
  * @file ewl_menu_base.h
  * @defgroup Ewl_Menu_Base Menu_Base: The Basic Menu Functionality
  * @brief Defines the basic menu classes that are extended to an actual menu
- * implementation by inheriting classes such as Ewl_Menu and Ewl_IMenu.
+ * implementation by inheriting classes such as Ewl_Menu and Ewl_Imenu.
  *
  * @{
  */
 
 /**
- * @themekey /menuitem/file
- * @themekey /menuitem/group
- *
  * @themekey /menu_base/file
  * @themekey /menu_base/group
  */
 
 /**
- * This serves as a basis for all menu related entries. It provides the most
- * basic layout facilities for items in a menu.
- */
-typedef struct Ewl_Menu_Item Ewl_Menu_Item;
-
-/**
- * @def EWL_MENU_ITEM(mi)
- * Typecasts a pointer to an Ewl_Menu_Item pointer.
- */
-#define EWL_MENU_ITEM(mi) ((Ewl_Menu_Item *)mi)
-
-/**
- * @struct Ewl_Menu_Item
- * Inherits from Ewl_Box to gain it's layout abilities, places policy on top
- * of the box framework to provide a simple menu layout of icon and label.
- */
-struct Ewl_Menu_Item
-{
-       Ewl_Box         box; /**< Inherit from Ewl_Box */
-       Ewl_Widget     *icon; /**< The image in this menu item */
-       Ewl_Widget     *text; /**< The text label for this menu item  */
-       Ewl_Widget     *inmenu; /**< Set if inside a menu */
-};
-
-/**
- * A simple separator widget for putting lines between items in the menu.
- * Special widget so enclosing menus can assume it can be treated as an
- * Ewl_Menu_Item.
- */
-typedef struct Ewl_Menu_Separator Ewl_Menu_Separator;
-
-/**
- * @def EWL_MENU_SEPARATOR(s)
- * Typecasts a pointer to an Ewl_Menu_Separator pointer.
- */
-#define EWL_MENU_SEPARATOR(s) ((Ewl_Menu_Separator *)s)
-
-/**
- * @struct Ewl_Menu_Separator
- * Inherits from Ewl_Menu_Item and limits it's functionality to simply provide
- * a separator between items in a menu.
- */
-struct Ewl_Menu_Separator
-{
-       Ewl_Menu_Item item; /**< Inherit from Ewl_Menu_Item */
-};
-
-/**
  * Provides the basic functionality common to the various menu classes.
  */
 typedef struct Ewl_Menu_Base Ewl_Menu_Base;
@@ -85,38 +34,21 @@
        int             hold;   /**< Indicates not to hide this on a deselect */
 };
 
-Ewl_Widget     *ewl_menu_item_new(void);
-int             ewl_menu_item_init(Ewl_Menu_Item * menu);
-char           *ewl_menu_item_text_get(Ewl_Menu_Item * item);
-void            ewl_menu_item_text_set(Ewl_Menu_Item * item, char *text);
-char           *ewl_menu_item_image_get(Ewl_Menu_Item * item);
-void            ewl_menu_item_image_set(Ewl_Menu_Item * item, char *image);
-
-
-Ewl_Widget     *ewl_menu_separator_new(void);
-void            ewl_menu_separator_init(Ewl_Menu_Separator *sep);
-
-int             ewl_menu_base_init(Ewl_Menu_Base *menu);
+int ewl_menu_base_init(Ewl_Menu_Base *menu);
 
 /*
  * Internally used callbacks, override at your own risk.
  */
 void ewl_menu_base_expand_cb(Ewl_Widget *w, void *ev_data, void *user_data);
-void ewl_menu_base_collapse_cb(Ewl_Widget * w, void *ev_data, void *user_data);
-void ewl_menu_base_destroy_cb(Ewl_Widget * w, void *ev_data, void *user_data);
+void ewl_menu_base_collapse_cb(Ewl_Widget *w, void *ev_data, void *user_data);
+void ewl_menu_base_destroy_cb(Ewl_Widget *w, void *ev_data, void *user_data);
 
-void ewl_menu_item_configure_cb(Ewl_Widget *w, void *ev_data, void *user_data);
-void ewl_menu_item_clicked_cb(Ewl_Widget *w, void *ev_data, void *user_data);
-void ewl_menu_item_child_show_cb(Ewl_Container *parent, Ewl_Widget *child);
-void ewl_menu_item_child_resize_cb(Ewl_Container *parent, Ewl_Widget *child,
-                            int size, Ewl_Orientation o);
-
-void ewl_menu_base_popup_show_cb(Ewl_Widget * w, void *ev_data,
-                                void *user_data);
-void ewl_menu_base_popup_hide_cb(Ewl_Widget * w, void *ev_data,
-                                void *user_data);
-void ewl_menu_base_popbox_key_down_cb(Ewl_Widget * w, void *ev_data,
-                                     void *user_data);
+void ewl_menu_base_popup_show_cb(Ewl_Widget *w, void *ev_data, 
+                                               void *user_data);
+void ewl_menu_base_popup_hide_cb(Ewl_Widget *w, void *ev_data, 
+                                               void *user_data);
+void ewl_menu_base_popbox_key_down_cb(Ewl_Widget *w, void *ev_data, 
+                                               void *user_data);
 
 /**
  * @}




-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.
Get Certified Today * Register for a JBoss Training Course
Free Certification Exam for All Training Attendees Through End of 2005
Visit http://www.jboss.com/services/certification for more information
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to