Enlightenment CVS committal

Author  : moom
Project : e17
Module  : libs/etk

Dir     : e17/libs/etk/src/lib


Modified Files:
        etk_combobox.c etk_combobox.h etk_dialog.c etk_dialog.h 
        etk_editable.c etk_message_dialog.c 


Log Message:
* [Dialog] API change of:
      - etk_dialog_action_area_alignment_get()
      - etk_dialog_pack_widget_in_action_area()
      - etk_dialog_pack_button_in_action_area()
     New functions:
      - etk_dialog_main_area_vbox_set/get() and
      - etk_dialog_action_area_homogeneous_set/get()
      - etk_dialog_button_response_id_set/get()
     Doc++
     
* [Combobox] API change of: etk_combobox_item_prev_set/get()



===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_combobox.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -3 -r1.40 -r1.41
--- etk_combobox.c      10 Mar 2007 00:57:58 -0000      1.40
+++ etk_combobox.c      10 Mar 2007 03:18:35 -0000      1.41
@@ -665,7 +665,7 @@
  * @param item a combobox item
  * @return Returns the item previous to @a item, or NULL if the given item is 
the first one
  */
-Etk_Combobox_Item *etk_combobox_item_prev_get(Etk_Combobox *combobox, 
Etk_Combobox_Item *item)
+Etk_Combobox_Item *etk_combobox_item_prev_get(Etk_Combobox_Item *item)
 {
    if (!item)
       return NULL;
@@ -677,7 +677,7 @@
  * @param item a combobox item
  * @return Returns the item next to @a item, or NULL if the given item is the 
last one
  */
-Etk_Combobox_Item *etk_combobox_item_next_get(Etk_Combobox *combobox, 
Etk_Combobox_Item *item)
+Etk_Combobox_Item *etk_combobox_item_next_get(Etk_Combobox_Item *item)
 {
    if (!item)
       return NULL;
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_combobox.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -3 -r1.18 -r1.19
--- etk_combobox.h      10 Mar 2007 00:57:58 -0000      1.18
+++ etk_combobox.h      10 Mar 2007 03:18:35 -0000      1.19
@@ -150,8 +150,8 @@
 
 Etk_Combobox_Item *etk_combobox_first_item_get(Etk_Combobox *combobox);
 Etk_Combobox_Item *etk_combobox_last_item_get(Etk_Combobox *combobox);
-Etk_Combobox_Item *etk_combobox_item_prev_get(Etk_Combobox *combobox, 
Etk_Combobox_Item *item);
-Etk_Combobox_Item *etk_combobox_item_next_get(Etk_Combobox *combobox, 
Etk_Combobox_Item *item);
+Etk_Combobox_Item *etk_combobox_item_prev_get(Etk_Combobox_Item *item);
+Etk_Combobox_Item *etk_combobox_item_next_get(Etk_Combobox_Item *item);
 Etk_Combobox_Item *etk_combobox_nth_item_get(Etk_Combobox *combobox, int 
index);
 Etk_Combobox      *etk_combobox_item_combobox_get(Etk_Combobox_Item *item);
 
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_dialog.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- etk_dialog.c        18 Feb 2007 16:53:24 -0000      1.16
+++ etk_dialog.c        10 Mar 2007 03:18:35 -0000      1.17
@@ -2,7 +2,6 @@
 #include "etk_dialog.h"
 #include <stdlib.h>
 #include <string.h>
-#include "etk_box.h"
 #include "etk_alignment.h"
 #include "etk_separator.h"
 #include "etk_button.h"
@@ -15,9 +14,6 @@
  * @{
  */
 
-#define ETK_DIALOG_FILL_POLICY(fill, expand) \
-   (((fill) ? ETK_BOX_FILL : ETK_BOX_NONE) | (((expand) ? ETK_BOX_EXPAND : 
ETK_BOX_NONE)))
-
 enum Etk_Dialog_Signal_Id
 {
    ETK_DIALOG_RESPONSE_SIGNAL,
@@ -27,6 +23,7 @@
 enum Etk_Dialog_Property_Id
 {
    ETK_DIALOG_HAS_SEPARATOR_PROPERTY,
+   ETK_DIALOG_ACTION_AREA_HOMOGENEOUS_PROPERTY,
    ETK_DIALOG_ACTION_AREA_ALIGN_PROPERTY
 };
 
@@ -49,7 +46,7 @@
  * @brief Gets the type of an Etk_Dialog
  * @return Returns the type of an Etk_Dialog
  */
-Etk_Type *etk_dialog_type_get()
+Etk_Type *etk_dialog_type_get(void)
 {
    static Etk_Type *dialog_type = NULL;
 
@@ -63,6 +60,8 @@
 
       etk_type_property_add(dialog_type, "has_separator", 
ETK_DIALOG_HAS_SEPARATOR_PROPERTY,
          ETK_PROPERTY_BOOL, ETK_PROPERTY_READABLE_WRITABLE, 
etk_property_value_bool(ETK_TRUE));
+      etk_type_property_add(dialog_type, "action_area_homogeneous", 
ETK_DIALOG_ACTION_AREA_HOMOGENEOUS_PROPERTY,
+         ETK_PROPERTY_BOOL, ETK_PROPERTY_READABLE_WRITABLE, 
etk_property_value_bool(ETK_TRUE));
       etk_type_property_add(dialog_type, "action_area_align", 
ETK_DIALOG_ACTION_AREA_ALIGN_PROPERTY,
          ETK_PROPERTY_FLOAT, ETK_PROPERTY_READABLE_WRITABLE, 
etk_property_value_float(0.5));
 
@@ -77,95 +76,73 @@
  * @brief Creates a new dialog
  * @return Returns the new dialog widget
  */
-Etk_Widget *etk_dialog_new()
+Etk_Widget *etk_dialog_new(void)
 {
    return etk_widget_new(ETK_DIALOG_TYPE, "theme_group", "dialog", NULL);
 }
 
 /**
- * @brief Packs a widget into the dialog's main area (above the buttons and 
the separator).
- * The widget will be appended in the main area's vbox (see etk_box_append())
+ * @brief Packs a widget into the dialog's main-area (above the buttons and 
the separator).
+ * The widget will be appended in the main-area's vbox (see etk_box_append())
  * @param dialog a dialog
  * @param widget the widget to pack
- * @param expand ETK_TRUE to make the widget expand as much as possible
- * @param fill ETK_TRUE to make the widget fill all the size allocated for it
- * @param padding the amount of space in pixels to put between the widget and 
its neighbors
- * @param pack_at_end if ETK_TRUE, the widget will be packed in the end-group 
of the vbox (at the bottom). Otherwise,
- * it will be packed at the start (at the top)
+ * @param group the box-group where to pack the child (ETK_BOX_START or 
ETK_BOX_END)
+ * @param fill_policy the fill-policy of the child, it indicates how it should 
fill its cell
+ * @param padding the amount of free space on the two sides of the child, in 
pixels
  * @see etk_box_append()
  */
-void etk_dialog_pack_in_main_area(Etk_Dialog *dialog, Etk_Widget *widget, 
Etk_Bool expand, Etk_Bool fill, int padding, Etk_Bool pack_at_end)
+void etk_dialog_pack_in_main_area(Etk_Dialog *dialog, Etk_Widget *widget, 
Etk_Box_Group group, Etk_Box_Fill_Policy fill_policy, int padding)
 {
-   Etk_Box_Fill_Policy fill_policy;
-   Etk_Box_Group group;
-   
    if (!dialog || !widget)
       return;
-   
-   fill_policy = ETK_DIALOG_FILL_POLICY(fill, expand);
-   group = pack_at_end ? ETK_BOX_END : ETK_BOX_START;
    etk_box_append(ETK_BOX(dialog->main_area_vbox), widget, group, fill_policy, 
padding);
 }
 
 /**
- * @brief Packs a widget into the dialog's action area (at the bottom of the 
dialog).
- * The widget will be appended in the action area's hbox (see etk_box_append())
+ * @brief Packs a widget into the dialog's action-area (at the bottom of the 
dialog).
+ * The widget will be appended in the action-area's hbox (see etk_box_append())
  * @param dialog a dialog
  * @param widget the widget to pack
- * @param expand ETK_TRUE to make the widget expand as much as possible
- * @param fill ETK_TRUE to make the widget fill all the size allocated for it
- * @param padding the amount of space in pixels to put between the widget and 
its neighbors
- * @param pack_at_end if ETK_TRUE, the widget will be packed in the end-group 
of the hbox (on the right). Otherwise,
- * it will be packed at the start (on the left)
+ * @param group the box-group where to pack the child (ETK_BOX_START or 
ETK_BOX_END)
+ * @param fill_policy the fill-policy of the child, it indicates how it should 
fill its cell
+ * @param padding the amount of free space on the two sides of the child, in 
pixels
  * @see etk_box_append()
  */
-void etk_dialog_pack_widget_in_action_area(Etk_Dialog *dialog, Etk_Widget 
*widget, Etk_Bool expand, Etk_Bool fill, int padding, Etk_Bool pack_at_end)
+void etk_dialog_pack_widget_in_action_area(Etk_Dialog *dialog, Etk_Widget 
*widget, Etk_Box_Group group, Etk_Box_Fill_Policy fill_policy, int padding)
 {
-   Etk_Box_Fill_Policy fill_policy;
-   Etk_Box_Group group;
-   
    if (!dialog || !widget)
       return;
-   
-   fill_policy = ETK_DIALOG_FILL_POLICY(fill, expand);
-   group = pack_at_end ? ETK_BOX_END : ETK_BOX_START;
    etk_box_append(ETK_BOX(dialog->action_area_hbox), widget, group, 
fill_policy, padding);
 }
 
 /**
- * @brief Packs a pre-created button into the dialog's action area (at the 
bottom of the dialog).
- * The button will be appended in the action area's hbox (see etk_box_append())
+ * @brief Packs a pre-created button into the dialog's action-area (at the 
bottom of the dialog).
+ * The button will be appended in the action-area's hbox (see etk_box_append())
  * @param dialog a dialog
  * @param button the button to pack
- * @param response_id the response id to associate to the button (see 
Etk_Dialog_Response_ID for common IDs)
- * @param expand ETK_TRUE to make the button expand as much as possible
- * @param fill ETK_TRUE to make the button fill all the size allocated for it
- * @param padding the amount of space in pixels to put between the button and 
its neighbors
- * @param pack_at_end if ETK_TRUE, the button will be packed in the end-group 
of the hbox (on the right). Otherwise,
- * it will be packed at the start (on the left)
+ * @param response_id the response-id to associate to the button (see 
Etk_Dialog_Response_ID for common IDs).
+ * The response-id will be passed to the "response" callbacks when the button 
is clicked
+ * @param group the box-group where to pack the child (ETK_BOX_START or 
ETK_BOX_END)
+ * @param fill_policy the fill-policy of the child, it indicates how it should 
fill its cell
+ * @param padding the amount of free space on the two sides of the child, in 
pixels
  * @see etk_box_append()
  */
-void etk_dialog_pack_button_in_action_area(Etk_Dialog *dialog, Etk_Button 
*button, int response_id, Etk_Bool expand, Etk_Bool fill, int padding, Etk_Bool 
pack_at_end)
+void etk_dialog_pack_button_in_action_area(Etk_Dialog *dialog, Etk_Button 
*button, int response_id, Etk_Box_Group group, Etk_Box_Fill_Policy fill_policy, 
int padding)
 {
-   int *id;   
-
    if (!dialog)
       return;
    
-   id = malloc(sizeof(int));
-   *id = response_id;
-   etk_object_data_set_full(ETK_OBJECT(button), "_Etk_Dialog::response_id", 
id, free);
-   etk_signal_connect("clicked", ETK_OBJECT(button), 
ETK_CALLBACK(_etk_dialog_button_clicked_cb), dialog);
-   
-   etk_dialog_pack_widget_in_action_area(dialog, ETK_WIDGET(button), expand, 
fill, padding, pack_at_end);
+   etk_dialog_button_response_id_set(dialog, button, response_id);
+   etk_box_append(ETK_BOX(dialog->action_area_hbox), ETK_WIDGET(button), 
group, fill_policy, padding);
 }
 
 /**
- * @brief Adds a button to the dialog's action area.
- * The button will be packed at the end of the hbox of the action area
+ * @brief Creates and packs a button to the dialog's action-area.
+ * The button will be packed in the end-group of the action-area's hbox, and 
will not expand.
  * @param dialog a dialog
  * @param label the button's label
- * @param response_id the response id to associate to the button (see 
Etk_Dialog_Response_ID for common IDs)
+ * @param response_id the response-id to associate to the button (see 
Etk_Dialog_Response_ID for common IDs).
+ * The response-id will be passed to the "response" callbacks when the button 
is clicked
  * @return Returns the newly added button
  * @note The new button will be automatically shown
  */
@@ -177,13 +154,63 @@
       return NULL;
    
    button = etk_button_new_with_label(label);
-   etk_dialog_pack_button_in_action_area(dialog, ETK_BUTTON(button), 
response_id, ETK_FALSE, ETK_FALSE, 0, ETK_TRUE);
+   etk_dialog_pack_button_in_action_area(dialog, ETK_BUTTON(button), 
response_id, ETK_BOX_END, ETK_BOX_NONE, 0);
    etk_widget_show(button);
    return button;
 }
 
 /**
- * @brief Sets the alignment of the buttons in the dialog's action area
+ * @brief Creates and packs a button to the dialog's action-area. The button 
is created from the given stock-id,
+ * will be packed in the end-group of the action-area's hbox, and will not 
expand.
+ * @param dialog a dialog
+ * @param stock_id the button's stock id
+ * @param response_id the response-id to associate to the button (see 
Etk_Dialog_Response_ID for common IDs).
+ * The response-id will be passed to the "response" callbacks when the button 
is clicked
+ * @return Returns the newly added button
+ * @note The new button will be automatically shown
+ */
+Etk_Widget *etk_dialog_button_add_from_stock(Etk_Dialog *dialog, int stock_id, 
int response_id)
+{
+   Etk_Widget *button;
+
+   if (!dialog)
+      return NULL;
+   
+   button = etk_button_new_from_stock(stock_id);
+   etk_dialog_pack_button_in_action_area(dialog, ETK_BUTTON(button), 
response_id, ETK_BOX_END, ETK_BOX_NONE, 0);
+   etk_widget_show(button);
+   return button;
+}
+
+/**
+ * @brief Sets whether or not the action-area's hbox is homogeneous, i.e 
whether or not all the widgets of the
+ * action-area should have the same size
+ * @param dialog a dialog
+ * @param homogeneous ETK_TRUE to make the action-area's hbox homogeneous, 
ETK_FALSE otherwise
+ */
+void etk_dialog_action_area_homogeneous_set(Etk_Dialog *dialog, Etk_Bool 
homogeneous)
+{
+   if (!dialog)
+      return;
+
+   etk_box_homogeneous_set(ETK_BOX(dialog->action_area_hbox), homogeneous);
+   etk_object_notify(ETK_OBJECT(dialog), "action_area_homogeneous");
+}
+
+/**
+ * @brief Gets whether or not the action-area's hbox is homogeneous
+ * @param dialog a dialog
+ * @return Returns ETK_TRUE if the action-area's hbox is homogeneous, 
ETK_FALSE otherwise
+ */
+Etk_Bool etk_dialog_action_area_homogeneous_get(Etk_Dialog *dialog)
+{
+   if (!dialog)
+      return ETK_FALSE;
+   return etk_box_homogeneous_get(ETK_BOX(dialog->action_area_hbox));
+}
+
+/**
+ * @brief Sets the horizontal alignment of the widget in the dialog's 
action-area
  * @param dialog a dialog
  * @param align the horizontal alignment (0.0 = left, 0.5 = center, 1.0 = 
right, ...)
  */
@@ -192,51 +219,95 @@
    if (!dialog)
       return;
 
-   if (dialog->align != align)
-   {
-      dialog->align = align;
-      etk_alignment_set(ETK_ALIGNMENT(dialog->action_area_alignment), align, 
0.5, 0.0, 0.0);
-      etk_object_notify(ETK_OBJECT(dialog), "action_area_align");
-   }
+   etk_alignment_set(ETK_ALIGNMENT(dialog->action_area_alignment), align, 0.5, 
0.0, 0.0);
+   etk_object_notify(ETK_OBJECT(dialog), "action_area_align");
 }
 
 /**
- * @brief Gets the alignment of the buttons in the dialog's action area
+ * @brief Gets the alignment of the widgets in the dialog's action-area
  * @param dialog a dialog
- * @param align the location where to store the horizontal alignment
+ * @return Returns the horizontal alignment of the action-area
  */
-void etk_dialog_action_area_alignment_get(Etk_Dialog *dialog, float *align)
+float etk_dialog_action_area_alignment_get(Etk_Dialog *dialog)
 {
-   if (align)
-      *align = dialog ? dialog->align : 0.0;
+   float align;
+   
+   if (!dialog)
+      return 0.0;
+   
+   etk_alignment_get(ETK_ALIGNMENT(dialog->action_area_alignment), &align, 
NULL, NULL, NULL);
+   return align;
 }
 
 /**
- * @brief Adds a button created from a stock id to the dialog's action area.
- * The button will be packed at the end of the hbox of the action area
+ * @brief Gets the vbox of the dialog's main-area. It might be useful if you 
want more control
+ * on the way the widgets are packed
  * @param dialog a dialog
- * @param stock_id the button's stock id
- * @param response_id the response id to associate to the button (see 
Etk_Dialog_Response_ID for common IDs)
- * @return Returns the newly added button
- * @note The new button will be automatically shown
+ * @return Returns the vbox of the dialog's main-area
  */
-Etk_Widget *etk_dialog_button_add_from_stock(Etk_Dialog *dialog, int stock_id, 
int response_id)
+Etk_Widget *etk_dialog_main_area_vbox_get(Etk_Dialog *dialog)
 {
-   Etk_Widget *button;
+   if (!dialog)
+      return NULL;
+   return dialog->main_area_vbox;
+}
 
+/**
+ * @brief Gets the hbox of the dialog's action-area. It might be useful if you 
want more control
+ * on the way the widgets are packed
+ * @param dialog a dialog
+ * @return Returns the hbox of the dialog's action-area
+ */
+Etk_Widget *etk_dialog_action_area_hbox_get(Etk_Dialog *dialog)
+{
    if (!dialog)
       return NULL;
+   return dialog->action_area_hbox;
+}
+
+/**
+ * @brief Associates a response-id to the button. This way, when the button 
will be clicked, the "response" signal
+ * of the dialog will be emitted with this response-id. This function might be 
useful if you pack the button yourself,
+ * without using etk_dialog_pack_button_in_action_area() or 
etk_dialog_button_add()
+ * @param dialog a dialog
+ * @param button the button to associate to the dialog and to the response-id
+ * @param response_id the response-id to associate to the button
+ * @note The button doesn't have to be packed in the dialog
+ */
+void etk_dialog_button_response_id_set(Etk_Dialog *dialog, Etk_Button *button, 
int response_id)
+{
+   int *id;
+
+   if (!dialog || !button)
+      return;
    
-   button = etk_button_new_from_stock(stock_id);
-   etk_dialog_pack_button_in_action_area(dialog, ETK_BUTTON(button), 
response_id, ETK_FALSE, ETK_FALSE, 0, ETK_TRUE);
-   etk_widget_show(button);
-   return button;
+   id = malloc(sizeof(int));
+   *id = response_id;
+   etk_object_data_set_full(ETK_OBJECT(button), "_Etk_Dialog::Response_Id", 
id, free);
+   
+   etk_signal_disconnect("clicked", ETK_OBJECT(button), 
ETK_CALLBACK(_etk_dialog_button_clicked_cb));
+   etk_signal_connect("clicked", ETK_OBJECT(button), 
ETK_CALLBACK(_etk_dialog_button_clicked_cb), dialog);
 }
 
 /**
- * @brief Sets whether the dialog has a horizontal separator between its main 
area and its action area
+ * @brief Gets the response-id associated to the button
+ * @param button a button
+ * @return Returns the response-id associated to the button, or 
ETK_RESPONSE_NONE if the button is not packed in a
+ * dialog
+ */
+int etk_dialog_button_response_id_get(Etk_Button *button)
+{
+   int *id;
+   
+   if (!button || !(id = (int *)etk_object_data_get(ETK_OBJECT(button), 
"_Etk_Dialog::Response_Id")))
+      return ETK_RESPONSE_NONE;
+   return *id;
+}
+
+/**
+ * @brief Sets whether or not there is a horizontal separator between the 
main-area and the action-area of the dialog
  * @param dialog a dialog
- * @param has_separator ETK_TRUE to show the separator
+ * @param has_separator ETK_TRUE to make the separator visible, ETK_FALSE to 
hide it
  */
 void etk_dialog_has_separator_set(Etk_Dialog *dialog, Etk_Bool has_separator)
 {
@@ -263,7 +334,6 @@
    return dialog->has_separator;
 }
 
-
 /**************************
  *
  * Etk specific functions
@@ -286,8 +356,8 @@
    etk_widget_show(dialog->main_area_vbox);
    
    dialog->separator = etk_hseparator_new();
-   etk_widget_theme_parent_set(dialog->separator, ETK_WIDGET(dialog));
    etk_widget_internal_set(dialog->separator, ETK_TRUE);
+   etk_widget_theme_parent_set(dialog->separator, ETK_WIDGET(dialog));
    etk_box_append(ETK_BOX(dialog->dialog_vbox), dialog->separator, 
ETK_BOX_START, ETK_BOX_FILL, 6);
    etk_widget_show(dialog->separator);
 
@@ -296,14 +366,12 @@
    etk_box_append(ETK_BOX(dialog->dialog_vbox), dialog->action_area_alignment, 
ETK_BOX_END, ETK_BOX_FILL, 0);
    etk_widget_show(dialog->action_area_alignment);
 
-   dialog->action_area_hbox = etk_hbox_new(ETK_FALSE, 6);
+   dialog->action_area_hbox = etk_hbox_new(ETK_TRUE, 4);
    etk_widget_internal_set(dialog->action_area_hbox, ETK_TRUE);
    etk_container_add(ETK_CONTAINER(dialog->action_area_alignment), 
dialog->action_area_hbox);
    etk_widget_show(dialog->action_area_hbox);
 
    etk_widget_lower(dialog->separator);
-
-   dialog->align = 0.5;
    dialog->has_separator = ETK_TRUE;
 }
 
@@ -320,6 +388,9 @@
       case ETK_DIALOG_HAS_SEPARATOR_PROPERTY:
          etk_dialog_has_separator_set(dialog, 
etk_property_value_bool_get(value));
          break;
+      case ETK_DIALOG_ACTION_AREA_HOMOGENEOUS_PROPERTY:
+         etk_dialog_action_area_homogeneous_set(dialog, 
etk_property_value_bool_get(value));
+         break;
       case ETK_DIALOG_ACTION_AREA_ALIGN_PROPERTY:
          etk_dialog_action_area_alignment_set(dialog, 
etk_property_value_float_get(value));
          break;
@@ -341,8 +412,11 @@
       case ETK_DIALOG_HAS_SEPARATOR_PROPERTY:
          etk_property_value_bool_set(value, 
etk_dialog_has_separator_get(dialog));
          break;
+      case ETK_DIALOG_ACTION_AREA_HOMOGENEOUS_PROPERTY:
+         etk_property_value_bool_set(value, 
etk_dialog_action_area_homogeneous_get(dialog));
+         break;
       case ETK_DIALOG_ACTION_AREA_ALIGN_PROPERTY:
-         etk_property_value_float_set(value, dialog->align);
+         etk_property_value_float_set(value, 
etk_dialog_action_area_alignment_get(dialog));
          break;
       default:
          break;
@@ -355,14 +429,14 @@
  *
  **************************/
 
-/* Called when a button of the action area of the dialog is clicked */
+/* Called when a button of the action-area of the dialog is clicked */
 static void _etk_dialog_button_clicked_cb(Etk_Object *object, void *data)
 {
-   int *response_id;
+   int response_id;
    
-   if (!(response_id = (int *)etk_object_data_get(object, 
"_Etk_Dialog::response_id")))
+   if ((response_id = etk_dialog_button_response_id_get(ETK_BUTTON(object))) 
== ETK_RESPONSE_NONE)
       return;
-   etk_signal_emit(_etk_dialog_signals[ETK_DIALOG_RESPONSE_SIGNAL], 
ETK_OBJECT(data), NULL, *response_id);
+   etk_signal_emit(_etk_dialog_signals[ETK_DIALOG_RESPONSE_SIGNAL], 
ETK_OBJECT(data), NULL, response_id);
 }
 
 /** @} */
@@ -377,14 +451,45 @@
  * @addtogroup Etk_Dialog
  *
  * @image html widgets/dialog.png
- * The dialog's window is split vertically in two area: the top area, called 
"main area", is an Etk_VBox where you can
- * pack any type of widgets; the bottom area, called "action area", is an 
Etk_HBox where you can pack any type of
- * widgets, but mostly buttons. Those buttons can be associated to a response 
id, which will be passed when the button
- * is clicked through the @b "response" signal of the dialog. @n @n
- * You can pack widgets in the main area with etk_dialog_pack_in_main_area(). 
@n
- * You can pack widgets in the action area with 
etk_dialog_pack_widget_in_action_area(),
+ * The dialog's window is split vertically in two areas: the top-area, called 
"main-area", is made of an Etk_VBox where
+ * you can pack any type of widgets; and the bottom-area, called 
"action-area", which is an Etk_HBox where you can pack
+ * any type of widgets, but mostly buttons. Those buttons can be associated to 
a response id, which will be passed when
+ * the button is clicked through the @b "response" signal of the dialog. @n @n
+ * You can pack widgets in the main-area with etk_dialog_pack_in_main_area(). 
@n
+ * You can pack widgets in the action-area with 
etk_dialog_pack_widget_in_action_area(),
  * etk_dialog_pack_button_in_action_area(), etk_dialog_button_add() and 
etk_dialog_button_add_from_stock(). @n @n
- * A horizontal separator can also separate the action area from the main area 
(visible by default)
+ * Here is a small code that shows how to treat the events when a button of 
the dialog is clicked:
+ * @code
+ * //Called when one of the buttons of the dialog is clicked
+ * void dialog_response_cb(Etk_Dialog *dialog, int response_id, void *data)
+ * {
+ *    switch (response_id)
+ *    {
+ *       case ETK_RESPONSE_OK:
+ *          printf("Ok has been clicked\n");
+ *          break;
+ *       case ETK_RESPONSE_APPLY:
+ *          printf("Apply has been clicked\n");
+ *          break;
+ *       case ETK_RESPONSE_CLOSE:
+ *          printf("Close has been clicked\n");
+ *          break;
+ *       default:
+ *          break;
+ *    }
+ *    etk_widget_hide(ETK_WIDGET(dialog));
+ * }
+ *
+ * //Creation of the dialog
+ * Etk_Dialog *dialog;
+ *
+ * dialog = ETK_DIALOG(etk_dialog_new());
+ * etk_dialog_pack_in_main_area(dialog, main_widget, ETK_BOX_START, 
ETK_BOX_EXPAND_FILL, 0);
+ * etk_dialog_button_add_from_stock(dialog, ETK_STOCK_DIALOG_OK, 
ETK_RESPONSE_OK);
+ * etk_dialog_button_add_from_stock(dialog, ETK_STOCK_DIALOG_APPLY, 
ETK_RESPONSE_APPLY);
+ * etk_dialog_button_add_from_stock(dialog, ETK_STOCK_DIALOG_CLOSE, 
ETK_RESPONSE_CLOSE);
+ * etk_signal_connect("response", ETK_OBJECT(dialog), 
ETK_CALLBACK(dialog_response_cb), NULL);
+ * @endcode @n
  * 
  * \par Object Hierarchy:
  * - Etk_Object
@@ -396,7 +501,7 @@
  *             - Etk_Dialog
  *
  * \par Signals:
- * @signal_name "response": Emitted when a button of the action area of the 
dialog is clicked.
+ * @signal_name "response": Emitted when a button of the action-area of the 
dialog is clicked.
  * @signal_cb void callback(Etk_Dialog *dialog, int response_id, void *data)
  * @signal_arg dialog: the dialog connected to the callback
  * @signal_arg response_id: the response id of the button that has been clicked
@@ -407,8 +512,13 @@
  * @prop_type Boolean
  * @prop_rw
  * @prop_val ETK_TRUE
- * \par:
- * @prop_name "action_area_align": The horizontal alignment of the widgets in 
the action area,
+ * \par
+ * @prop_name "action_area_homogeneous": Whether or not the widgets of the 
action-area have all the same size
+ * @prop_type Boolean
+ * @prop_rw
+ * @prop_val ETK_TRUE
+ * \par
+ * @prop_name "action_area_align": The horizontal alignment of the widgets in 
the action-area,
  * from 0.0 (left) to 1.0 (right)
  * @prop_type Float
  * @prop_rw
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_dialog.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- etk_dialog.h        17 Feb 2007 17:27:08 -0000      1.10
+++ etk_dialog.h        10 Mar 2007 03:18:36 -0000      1.11
@@ -3,12 +3,12 @@
 #define _ETK_DIALOG_H_
 
 #include "etk_window.h"
+#include "etk_box.h"
 #include "etk_types.h"
 
 /* TODO/FIXME list:
  * - We should certainly set some X hints to make dialogs not only simple 
windows
  * - Find a way to make modal dialogs
- * - Make the stacking of the separator defined by the theme
  */
 
 /**
@@ -24,6 +24,7 @@
 /** Checks if the object is an Etk_Dialog */
 #define ETK_IS_DIALOG(obj)    (ETK_OBJECT_CHECK_TYPE((obj), ETK_DIALOG_TYPE))
 
+
 /** @brief Some common response IDs to use with an Etk_Dialog */
 typedef enum Etk_Dialog_Response_ID
 {
@@ -40,6 +41,7 @@
    ETK_RESPONSE_HELP = -11              /**< Response: Help */
 } Etk_Dialog_Response_ID;
 
+
 /**
  * @brief @widget A window with buttons in its bottom area to allow the user 
to respond to a request
  * @structinfo
@@ -57,21 +59,27 @@
    Etk_Widget *separator;
 
    Etk_Bool has_separator;
-
-   float align;
 };
 
-Etk_Type *etk_dialog_type_get();
-Etk_Widget *etk_dialog_new();
+Etk_Type   *etk_dialog_type_get(void);
+Etk_Widget *etk_dialog_new(void);
 
-void etk_dialog_pack_in_main_area(Etk_Dialog *dialog, Etk_Widget *widget, 
Etk_Bool expand, Etk_Bool fill, int padding, Etk_Bool pack_at_end);
-void etk_dialog_pack_widget_in_action_area(Etk_Dialog *dialog, Etk_Widget 
*widget, Etk_Bool expand, Etk_Bool fill, int padding, Etk_Bool pack_at_end);
-void etk_dialog_pack_button_in_action_area(Etk_Dialog *dialog, Etk_Button 
*button, int response_id, Etk_Bool expand, Etk_Bool fill, int padding, Etk_Bool 
pack_at_end);
+void etk_dialog_pack_in_main_area(Etk_Dialog *dialog, Etk_Widget *widget, 
Etk_Box_Group group, Etk_Box_Fill_Policy fill_policy, int padding);
+void etk_dialog_pack_widget_in_action_area(Etk_Dialog *dialog, Etk_Widget 
*widget, Etk_Box_Group group, Etk_Box_Fill_Policy fill_policy, int padding);
+void etk_dialog_pack_button_in_action_area(Etk_Dialog *dialog, Etk_Button 
*button, int response_id, Etk_Box_Group group, Etk_Box_Fill_Policy fill_policy, 
int padding);
 
 Etk_Widget *etk_dialog_button_add(Etk_Dialog *dialog, const char *label, int 
response_id);
 Etk_Widget *etk_dialog_button_add_from_stock(Etk_Dialog *dialog, int stock_id, 
int response_id);
-void etk_dialog_action_area_alignment_set(Etk_Dialog *dialog, float align);
-void etk_dialog_action_area_alignment_get(Etk_Dialog *dialog, float *align);
+
+void     etk_dialog_action_area_homogeneous_set(Etk_Dialog *dialog, Etk_Bool 
homogeneous);
+Etk_Bool etk_dialog_action_area_homogeneous_get(Etk_Dialog *dialog);
+void     etk_dialog_action_area_alignment_set(Etk_Dialog *dialog, float align);
+float    etk_dialog_action_area_alignment_get(Etk_Dialog *dialog);
+
+Etk_Widget *etk_dialog_main_area_vbox_get(Etk_Dialog *dialog);
+Etk_Widget *etk_dialog_action_area_hbox_get(Etk_Dialog *dialog);
+void        etk_dialog_button_response_id_set(Etk_Dialog *dialog, Etk_Button 
*button, int response_id);
+int         etk_dialog_button_response_id_get(Etk_Button *button);
 
 void     etk_dialog_has_separator_set(Etk_Dialog *dialog, Etk_Bool 
has_separator);
 Etk_Bool etk_dialog_has_separator_get(Etk_Dialog *dialog);
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_editable.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- etk_editable.c      8 Mar 2007 18:16:01 -0000       1.6
+++ etk_editable.c      10 Mar 2007 03:18:36 -0000      1.7
@@ -12,8 +12,8 @@
  * @{
  */
 
-#define ETK_EDITABLE_CURSOR_MARGIN 5
-#define ETK_EDITABLE_SELECTION_MARGIN 10
+#define CURSOR_MARGIN 5
+#define SELECTION_MARGIN 10
 
 typedef struct Etk_Editable_Smart_Data
 {
@@ -649,9 +649,9 @@
    canvas_x = ox + x;
    canvas_y = oy + y;
    
-   if (((canvas_y + ETK_EDITABLE_SELECTION_MARGIN) < ty) || (canvas_x < tx))
+   if (((canvas_y + SELECTION_MARGIN) < ty) || (canvas_x < tx))
       pos = 0;
-   else if (((canvas_y - ETK_EDITABLE_SELECTION_MARGIN) > (ty + th)) || 
(canvas_x > (tx + tw)))
+   else if (((canvas_y - SELECTION_MARGIN) > (ty + th)) || (canvas_x > (tx + 
tw)))
       pos = sd->unicode_length;
    else
    {
@@ -936,10 +936,10 @@
    
    if (tw <= ow)
       offset_x = ox - tx;
-   else if (cx < (ox + ETK_EDITABLE_CURSOR_MARGIN))
-      offset_x = ox + ETK_EDITABLE_CURSOR_MARGIN - cx;
-   else if ((cx + cw + ETK_EDITABLE_CURSOR_MARGIN) > (ox + ow))
-      offset_x = (ox + ow) - (cx + cw + ETK_EDITABLE_CURSOR_MARGIN);
+   else if (cx < (ox + CURSOR_MARGIN))
+      offset_x = ox + CURSOR_MARGIN - cx;
+   else if ((cx + cw + CURSOR_MARGIN) > (ox + ow))
+      offset_x = (ox + ow) - (cx + cw + CURSOR_MARGIN);
      
    if (tw > ow)
    {
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_message_dialog.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- etk_message_dialog.c        6 Oct 2006 17:04:14 -0000       1.6
+++ etk_message_dialog.c        10 Mar 2007 03:18:36 -0000      1.7
@@ -217,7 +217,7 @@
       return;
 
    dialog->main_area_hbox = etk_hbox_new(ETK_FALSE, 0);
-   etk_dialog_pack_in_main_area(ETK_DIALOG(dialog), dialog->main_area_hbox, 
ETK_FALSE, ETK_FALSE, 4, ETK_FALSE);
+   etk_dialog_pack_in_main_area(ETK_DIALOG(dialog), dialog->main_area_hbox, 
ETK_BOX_START, ETK_BOX_NONE, 4);
    etk_widget_internal_set(dialog->main_area_hbox, ETK_TRUE);
    etk_widget_show(dialog->main_area_hbox);
    



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to