Enlightenment CVS committal

Author  : dj2
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/lib


Modified Files:
        ewl_datepicker.c ewl_datepicker.h 


Log Message:
- rename Ewl_DatePicker to Ewl_Datepicker
- make sure we have an embed before trying to query it's size
- reformat and rearrange
- add typechecking and debug macros as needed

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_datepicker.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- ewl_datepicker.c    23 Oct 2005 16:05:37 -0000      1.5
+++ ewl_datepicker.c    23 Oct 2005 18:12:26 -0000      1.6
@@ -3,129 +3,183 @@
 #include "ewl_macros.h"
 #include "ewl_private.h"
 
+static void ewl_datepicker_calendar_position_set(Ewl_Datepicker *dp);
+static void ewl_datepicker_dropdown_cb(Ewl_Widget *w, void *ev_data, 
+                                                       void *user_data); 
+
 /**
- * @return Returns NULL on failure, a new Ewl_DatePicker on success
- * @brief Creates a new Ewl_DatePicker
+ * @return Returns NULL on failure, a new Ewl_Datepicker on success
+ * @brief Creates a new Ewl_Datepicker
  */
-Ewl_Widget *ewl_datepicker_new() {
-       Ewl_DatePicker* ib;
-       DENTER_FUNCTION (DLEVEL_STABLE);
+Ewl_Widget *
+ewl_datepicker_new(void) 
+{
+       Ewl_Datepicker *ib;
+
+       DENTER_FUNCTION(DLEVEL_STABLE);
 
-       ib = NEW(Ewl_DatePicker, 1);
+       ib = NEW(Ewl_Datepicker, 1);
        if (!ib) {
                DRETURN_PTR(NULL, DLEVEL_STABLE);
        }
 
        if (!ewl_datepicker_init(ib)) {
-               DWARNING("Failed datepicker init...\n");
-               FREE(ib);
+               ewl_widget_destroy(EWL_WIDGET(ib));
                ib = NULL;
        }
 
        DRETURN_PTR(EWL_WIDGET(ib), DLEVEL_STABLE);
 }
 
-void ewl_datepicker_calendar_position_set(Ewl_DatePicker* dp) {
-       int x,y;
-       int sx,sy;
-       Ewl_Embed* emb;
+/**
+ * @param db: The Ewl_Datepicker to initialize
+ * @return Returns TRUE on success or FALSE on failure
+ */
+int
+ewl_datepicker_init(Ewl_Datepicker *dp) 
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR_RET("dp", dp, FALSE);
 
-       /* Get the position of the parent */
-       emb = ewl_embed_widget_find(EWL_WIDGET(dp));
-       ewl_window_position_get(EWL_WINDOW(emb), &x,&y);
-       ewl_object_current_size_get(EWL_OBJECT(dp), &sx,&sy);
-       ewl_window_move(EWL_WINDOW(dp->calendar_window), x+(sx/4),y+sy+3);
+       if (!ewl_text_init(EWL_TEXT(dp)))
+               DRETURN_INT(FALSE, DLEVEL_STABLE);
 
-}
+       ewl_text_text_set(EWL_TEXT(dp), "Date Test");
 
-void
-ewl_datepicker_destroy_cb (Ewl_Widget *w, void *ev_data __UNUSED__,
-                                       void *user_data __UNUSED__) {
-       Ewl_DatePicker* dp = EWL_DATEPICKER(w);
-       ewl_widget_destroy(dp->calendar_window);
-       ewl_widget_destroy(dp->calendar);
-}
+       /* Init ewl setup */
+       ewl_widget_appearance_set(EWL_WIDGET(dp), "datepicker");
+       ewl_widget_inherit(EWL_WIDGET(dp), "datepicker");
+
+       dp->calendar_window = ewl_window_new();
+       ewl_object_custom_size_set(EWL_OBJECT(dp->calendar_window), 159, 170);
+       ewl_object_fill_policy_set(EWL_OBJECT(dp->calendar_window), 
+                                               EWL_FLAG_FILL_FILL);
+        ewl_widget_layer_set(dp->calendar_window, 1000);
+        ewl_window_borderless_set(EWL_WINDOW(dp->calendar_window));
+
+       dp->calendar = ewl_calendar_new();
+       ewl_container_child_append(EWL_CONTAINER(dp->calendar_window), 
+                                                       dp->calendar);
+       ewl_callback_append(EWL_WIDGET(dp->calendar), 
+                               EWL_CALLBACK_VALUE_CHANGED, 
+                               ewl_datepicker_value_changed_cb, dp);
+       ewl_widget_show(dp->calendar);
 
-void
-ewl_datepicker_dropdown(Ewl_Widget *w, void *ev_data __UNUSED__, 
-                                       void *user_data __UNUSED__) {
-       
-       Ewl_DatePicker *dp = EWL_DATEPICKER(w);
-       /*printf("Drop down..\n");*/    
-       ewl_widget_show(dp->calendar_window);
-       ewl_window_raise(EWL_WINDOW(dp->calendar_window));
        ewl_datepicker_calendar_position_set(dp);
+
+       ewl_callback_prepend(EWL_WIDGET(dp), EWL_CALLBACK_DESTROY, 
+                               ewl_datepicker_destroy_cb, dp);
+       ewl_callback_append(EWL_WIDGET(dp), EWL_CALLBACK_CONFIGURE,
+                                   ewl_datepicker_configure_cb, NULL);
+       ewl_callback_append(EWL_WIDGET(dp), EWL_CALLBACK_MOUSE_DOWN, 
+                               ewl_datepicker_dropdown_cb, NULL);
        
+       ewl_callback_call(EWL_WIDGET(dp->calendar), EWL_CALLBACK_VALUE_CHANGED);
 
-       //ewl_container_child_append(EWL_CONTAINER(dp), dp->calendar_window);
+       DRETURN_INT(TRUE, DLEVEL_STABLE);
+}
 
+void
+ewl_datepicker_destroy_cb(Ewl_Widget *w, void *ev_data __UNUSED__,
+                                       void *user_data __UNUSED__) 
+{
+       Ewl_Datepicker *dp;
+       
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("w", w);
+       DCHECK_TYPE("w", w, "widget");
 
+       dp = EWL_DATEPICKER(w);
+       ewl_widget_destroy(dp->calendar_window);
+       ewl_widget_destroy(dp->calendar);
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
 void
 ewl_datepicker_configure_cb(Ewl_Widget *w, void *ev_data __UNUSED__, 
-                                       void *user_data __UNUSED__) {
+                                       void *user_data __UNUSED__) 
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("w", w);
+       DCHECK_TYPE("w", w, "widget");
+
        ewl_datepicker_calendar_position_set(EWL_DATEPICKER(w));
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
 void
 ewl_datepicker_value_changed_cb(Ewl_Widget *w __UNUSED__, void *ev_data 
__UNUSED__, 
-                                                       void *user_data) {
+                                                       void *user_data) 
+{
        static char date[1024];
-       Ewl_DatePicker* dp = EWL_DATEPICKER(user_data);
+       Ewl_Datepicker* dp;
+
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("user_data", user_data);
+
+       dp = EWL_DATEPICKER(user_data);
        ewl_widget_hide(dp->calendar_window);
 
        ewl_calendar_ascii_time_get(EWL_CALENDAR(dp->calendar), date);
        ewl_text_text_set(EWL_TEXT(dp), date);
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
-void ewl_datepicker_realize_cb(Ewl_Widget *w, void *ev_data __UNUSED__, 
-                                               void *user_data __UNUSED__) {
+void
+ewl_datepicker_realize_cb(Ewl_Widget *w, void *ev_data __UNUSED__, 
+                                               void *user_data __UNUSED__) 
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("w", w);
+       DCHECK_TYPE("w", w, "widget");
+
        ewl_datepicker_calendar_position_set(EWL_DATEPICKER(w));
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
-int ewl_datepicker_init(Ewl_DatePicker* dp) {
-       Ewl_Widget* w   ;
-       
-       w = EWL_WIDGET(dp);
-       
-       if (!ewl_text_init(EWL_TEXT(dp)))
-                       DRETURN_INT(FALSE, DLEVEL_STABLE);
+static void
+ewl_datepicker_calendar_position_set(Ewl_Datepicker *dp) 
+{
+       int x, y;
+       int sx, sy;
+       Ewl_Embed *emb;
+
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("dp", dp);
+       DCHECK_TYPE("dp", dp, "datepicker");
 
-       ewl_text_text_set(EWL_TEXT(dp), "Date Test");
+       /* Get the position of the parent */
+       emb = ewl_embed_widget_find(EWL_WIDGET(dp));
+       if (emb) {
+               ewl_window_position_get(EWL_WINDOW(emb), &x, &y);
+               ewl_object_current_size_get(EWL_OBJECT(dp), &sx, &sy);
+               ewl_window_move(EWL_WINDOW(dp->calendar_window), x + (sx / 4), 
+                                                               y + sy + 3);
+       }
 
-       /* Init ewl setup */
-       ewl_widget_appearance_set(EWL_WIDGET(w), "datepicker");
-       ewl_widget_inherit(EWL_WIDGET(w), "datepicker");
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
 
-       ewl_callback_append(w, EWL_CALLBACK_MOUSE_DOWN, 
ewl_datepicker_dropdown, NULL);
-       dp->calendar = NULL;
-       dp->calendar_window = NULL;
-       
-       
-       dp->calendar_window = ewl_window_new();
-       dp->calendar = ewl_calendar_new();
-       ewl_object_custom_size_set(EWL_OBJECT(dp->calendar_window), 159, 170);
-       ewl_object_fill_policy_set(EWL_OBJECT(dp->calendar_window), 
EWL_FLAG_FILL_FILL);
-       ewl_container_child_append(EWL_CONTAINER(dp->calendar_window), 
dp->calendar);
-        ewl_window_borderless_set(EWL_WINDOW(dp->calendar_window));
-        /*ewl_widget_internal_set(dp->calendar_window, TRUE);*/
-        ewl_widget_layer_set(dp->calendar_window, 1000);
+static void
+ewl_datepicker_dropdown_cb(Ewl_Widget *w, void *ev_data __UNUSED__, 
+                                       void *user_data __UNUSED__) 
+{
+       Ewl_Datepicker *dp;
 
-       ewl_callback_append(EWL_WIDGET(dp), EWL_CALLBACK_CONFIGURE,
-                            ewl_datepicker_configure_cb, NULL);
-       ewl_widget_show(dp->calendar);
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("w", w);
+       DCHECK_TYPE("w", w, "widget");
 
+       dp = EWL_DATEPICKER(w);
+       ewl_widget_show(dp->calendar_window);
+       ewl_window_raise(EWL_WINDOW(dp->calendar_window));
        ewl_datepicker_calendar_position_set(dp);
-       /*ewl_widget_show(dp->calendar_window);
-       ewl_widget_hide(dp->calendar_window);*/ 
 
-       ewl_callback_append(EWL_WIDGET(dp->calendar), 
EWL_CALLBACK_VALUE_CHANGED, ewl_datepicker_value_changed_cb, dp);
-       ewl_callback_append(EWL_WIDGET(dp), EWL_CALLBACK_DESTROY, 
ewl_datepicker_destroy_cb, dp);
-       ewl_callback_call(EWL_WIDGET(dp->calendar), EWL_CALLBACK_VALUE_CHANGED);
-
-
-       DRETURN_INT(TRUE, DLEVEL_STABLE);
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_datepicker.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- ewl_datepicker.h    9 Oct 2005 05:18:39 -0000       1.2
+++ ewl_datepicker.h    23 Oct 2005 18:12:26 -0000      1.3
@@ -1,12 +1,10 @@
 #ifndef __EWL_DATEPICKER_H__
 #define __EWL_DATEPICKER_H__
 
-
-
 /**
  * @file ewl_datepicker.h
- * @defgroup Ewl_DatePicker datepicker: The EWL Datepicker widget
- * @brief Defines the Ewl_DatePicker class,  
+ * @defgroup Ewl_Datepicker datepicker: The EWL Datepicker widget
+ * @brief Defines the Ewl_Datepicker class,  
  *
  */
 
@@ -15,21 +13,20 @@
  * @themekey /datepicker/group
  */
 
-
-typedef struct Ewl_DatePicker Ewl_DatePicker;
+typedef struct Ewl_Datepicker Ewl_Datepicker;
 
 /**
  * @def EWL_DATEPICKER(datepicker)
- * Typecast a pointer to an Ewl_DatePicker pointer
+ * Typecast a pointer to an Ewl_Datepicker pointer
  */
-#define EWL_DATEPICKER(datepicker) ((Ewl_DatePicker *) datepicker)
+#define EWL_DATEPICKER(datepicker) ((Ewl_Datepicker *) datepicker)
 
 /** 
- * @struct Ewl_DatePicker
+ * @struct Ewl_Datepicker
  * Inherits from an Ewl_Text 
  * 
  */
-struct Ewl_DatePicker
+struct Ewl_Datepicker
 {
        Ewl_Text  text; /**< Inherit from Ewl_Text */
 
@@ -38,9 +35,19 @@
 
 };
 
-
 Ewl_Widget     *ewl_datepicker_new(void);
-int            ewl_datepicker_init(Ewl_DatePicker* datepicker);
+int             ewl_datepicker_init(Ewl_Datepicker* datepicker);
 
+/*
+ * Internally used callbacks, override at your risk
+ */
+void ewl_datepicker_destroy_cb(Ewl_Widget *w, void *ev_data,
+                               void *user_data);
+void ewl_datepicker_configure_cb(Ewl_Widget *w, void *ev_data,
+                               void *user_data);
+void ewl_datepicker_value_changed_cb(Ewl_Widget *w, void *ev_data,
+                               void *user_data);
+void ewl_datepicker_realize_cb(Ewl_Widget *w, void *ev_data, 
+                               void *user_data);
 
 #endif




-------------------------------------------------------
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