Enlightenment CVS committal

Author  : leviathan
Project : e17
Module  : libs/etk

Dir     : e17/libs/etk/src/lib


Modified Files:
        etk_combobox.c etk_combobox.h etk_combobox_entry.c 
        etk_combobox_entry.h 


Log Message:
Add the ability to set an individual column's field for comboboxes

===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_combobox.c,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -3 -r1.47 -r1.48
--- etk_combobox.c      2 Apr 2007 20:13:50 -0000       1.47
+++ etk_combobox.c      6 Aug 2007 12:02:40 -0000       1.48
@@ -501,6 +501,52 @@
 }
 
 /**
+ * @brief Sets the value of the one column of the combobox item. The current 
widgets of item will be destroyed
+ * @param item a combobox item
+ * @param column the column to set the value of
+ * @param value the different widget to attach to the column of the item:
+ * - If the type of the corresponding column is ETK_COMBOBOX_LABEL, the 
argument must be a "const char *" @n
+ * - If the type of the corresponding column is ETK_COMBOBOX_IMAGE, the 
argument must be an "Etk_Image *" @n
+ * - If the type of the corresponding column is ETK_COMBOBOX_OTHER, the 
argument must be an "Etk_Widget *"
+ * @note The new widgets of the item will be automatically shown
+ */
+void etk_combobox_item_field_set(Etk_Combobox_Item *item, int column, void 
*value)
+{
+   Etk_Combobox *combobox;
+   
+   if (!item || !(combobox = item->combobox) || (column >= combobox->num_cols))
+      return;
+   
+   switch (combobox->cols[column]->type)
+   {
+      if (item->widgets[column])
+         etk_object_destroy(ETK_OBJECT(item->widgets[column]));
+      
+      case ETK_COMBOBOX_LABEL:
+         item->widgets[column] = etk_label_new((const char *) value);
+         etk_widget_pass_mouse_events_set(item->widgets[column], ETK_TRUE);
+         break;
+      case ETK_COMBOBOX_IMAGE:
+         item->widgets[column] = ETK_WIDGET((Etk_Widget *) value);
+         etk_widget_pass_mouse_events_set(item->widgets[column], ETK_TRUE);
+         break;
+      case ETK_COMBOBOX_OTHER:
+         item->widgets[column] = ETK_WIDGET((Etk_Widget *) value);
+         break;
+      default:
+         item->widgets[column] = NULL;
+         break;
+   }
+   etk_widget_parent_set(item->widgets[column], ETK_WIDGET(item));
+   etk_widget_show(item->widgets[column]);
+   
+   if (combobox->active_item == item)
+      etk_combobox_active_item_set(combobox, item);
+}
+
+
+
+/**
  * @brief Gets the values of the cells of the combobox item
  * @param item a combobox item
  * @param ... the location where to store the different values of the cells of 
the item:
@@ -566,6 +612,49 @@
       etk_widget_show(item->widgets[i]);
    }
 }
+
+/**
+ * @brief Gets the value of the cell of a column of the combobox item
+ * @param item a combobox item
+ * @param column the column to get the values of
+ * @return The value of the cell as a void pointer that you must cast to the 
appropriate type:
+ * - If the type of the corresponding column is ETK_COMBOBOX_LABEL, the 
argument must be a "const char **" @n
+ * - If the type of the corresponding column is ETK_COMBOBOX_IMAGE, the 
argument must be an "Etk_Image **" @n
+ * - If the type of the corresponding column is ETK_COMBOBOX_OTHER, the 
argument must be an "Etk_Widget **"
+ */
+void * etk_combobox_item_field_get(Etk_Combobox_Item *item, int column)
+{
+   Etk_Combobox *combobox;
+   
+   if (!item || !(combobox = item->combobox) || (column >= combobox->num_cols))
+      return NULL;
+   
+   switch (combobox->cols[column]->type)
+   {
+      case ETK_COMBOBOX_LABEL:
+      {
+         const char *label;
+         label = etk_label_get(ETK_LABEL(item->widgets[column]));
+        return (void *)label;
+         break;
+      }
+      case ETK_COMBOBOX_IMAGE:
+      case ETK_COMBOBOX_OTHER:
+      {
+         Etk_Widget *widget;
+         widget = item->widgets[column];
+        return (void *) widget;
+         break;
+      }
+      default:
+        return NULL;
+         break;
+   }
+// FIXME: are these needed here?
+//   etk_widget_parent_set(item->widgets[column], ETK_WIDGET(item));
+//   etk_widget_show(item->widgets[column]);
+}
+
 
 /**
  * @brief Sets the data associated to the combobox item
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_combobox.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -3 -r1.21 -r1.22
--- etk_combobox.h      27 Jul 2007 16:24:13 -0000      1.21
+++ etk_combobox.h      6 Aug 2007 12:02:40 -0000       1.22
@@ -140,8 +140,10 @@
 
 void               etk_combobox_item_fields_set(Etk_Combobox_Item *item, ...);
 void               etk_combobox_item_fields_set_valist(Etk_Combobox_Item 
*item, va_list args);
+void               etk_combobox_item_field_set(Etk_Combobox_Item *item, int 
column, void *value);
 void               etk_combobox_item_fields_get(Etk_Combobox_Item *item, ...);
 void               etk_combobox_item_fields_get_valist(Etk_Combobox_Item 
*item, va_list args);
+void *             etk_combobox_item_field_get(Etk_Combobox_Item *item, int 
column);
 
 void               etk_combobox_item_data_set(Etk_Combobox_Item *item, void 
*data);
 void               etk_combobox_item_data_set_full(Etk_Combobox_Item *item, 
void *data, void (*free_cb)(void *data));
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_combobox_entry.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- etk_combobox_entry.c        28 Jun 2007 11:05:44 -0000      1.1
+++ etk_combobox_entry.c        6 Aug 2007 12:02:40 -0000       1.2
@@ -483,6 +483,48 @@
 }
 
 /**
+ * @brief Sets the value of the cell of one column of the combobox_entry item. 
The current widgets of item will be destroyed
+ * @param item a combobox_entry item
+ * @param column the column to set the value of
+ * @param data the value of the column to set:
+ * - If the type of the corresponding column is ETK_COMBOBOX_ENTRY_LABEL, the 
argument must be a "const char *" @n
+ * - If the type of the corresponding column is ETK_COMBOBOX_ENTRY_IMAGE, the 
argument must be an "Etk_Image *" @n
+ * - If the type of the corresponding column is ETK_COMBOBOX_ENTRY_OTHER, the 
argument must be an "Etk_Widget *"
+ * @note The new widgets of the item will be automatically shown
+ */
+void etk_combobox_entry_item_field_set(Etk_Combobox_Entry_Item *item, int 
column, void *value)
+{
+   Etk_Combobox_Entry *combobox_entry;
+   
+   if (!item || !(combobox_entry = item->combobox_entry) || (column >= 
combobox_entry->num_cols))
+      return;
+   
+   switch (combobox_entry->cols[column]->type)
+   {
+      if (item->widgets[column])
+         etk_object_destroy(ETK_OBJECT(item->widgets[column]));
+      
+      case ETK_COMBOBOX_ENTRY_LABEL:
+         item->widgets[column] = etk_label_new((char *)value);
+         etk_widget_pass_mouse_events_set(item->widgets[column], ETK_TRUE);
+         break;
+      case ETK_COMBOBOX_ENTRY_IMAGE:
+         item->widgets[column] = ETK_WIDGET((Etk_Widget *)value);
+         etk_widget_pass_mouse_events_set(item->widgets[column], ETK_TRUE);
+         break;
+      case ETK_COMBOBOX_ENTRY_OTHER:
+         item->widgets[column] = ETK_WIDGET((Etk_Widget *)value);
+         break;
+      default:
+         item->widgets[column] = NULL;
+         break;
+   }
+   etk_widget_parent_set(item->widgets[column], ETK_WIDGET(item));
+   etk_widget_show(item->widgets[column]);
+}
+
+
+/**
  * @brief Gets the values of the cells of the combobox_entry item
  * @param item a combobox_entry item
  * @param ... the location where to store the different values of the cells of 
the item:
@@ -548,6 +590,49 @@
       etk_widget_show(item->widgets[i]);
    }
 }
+
+/**
+ * @brief Gets the value of the cell of a column of the combobox_entry item
+ * @param item a combobox_entry item
+ * @param column the column to get the value of
+ * @return the value of the column as a void pointer that must be cast to the 
correct type:
+ * - If the type of the corresponding column is ETK_COMBOBOX_ENTRY_LABEL, the 
argument must be a "const char **" @n
+ * - If the type of the corresponding column is ETK_COMBOBOX_ENTRY_IMAGE, the 
argument must be an "Etk_Image **" @n
+ * - If the type of the corresponding column is ETK_COMBOBOX_ENTRY_OTHER, the 
argument must be an "Etk_Widget **"
+ */
+void * etk_combobox_entry_item_field_get(Etk_Combobox_Entry_Item *item, int 
column)
+{
+   Etk_Combobox_Entry *combobox_entry;
+   
+   if (!item || !(combobox_entry = item->combobox_entry) || (column >= 
combobox_entry->num_cols))
+      return NULL;
+   
+   switch (combobox_entry->cols[column]->type)
+   {
+      case ETK_COMBOBOX_ENTRY_LABEL:
+      {
+         const char *label;
+         label = etk_label_get(ETK_LABEL(item->widgets[column]));
+        return (void *)label;
+         break;
+      }
+      case ETK_COMBOBOX_ENTRY_IMAGE:
+      case ETK_COMBOBOX_ENTRY_OTHER:
+      {
+         Etk_Widget *widget;
+         widget = item->widgets[column];
+        return (void *)widget;
+         break;
+      }
+      default:
+         return NULL;
+         break;
+   }
+// FIXME: do we need this?   
+//   etk_widget_parent_set(item->widgets[column], ETK_WIDGET(item));
+//   etk_widget_show(item->widgets[column]);
+}
+
 
 /**
  * @brief Sets the data associated to the combobox_entry item
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_combobox_entry.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- etk_combobox_entry.h        27 Jul 2007 16:24:13 -0000      1.2
+++ etk_combobox_entry.h        6 Aug 2007 12:02:40 -0000       1.3
@@ -141,8 +141,10 @@
 
 void               etk_combobox_entry_item_fields_set(Etk_Combobox_Entry_Item 
*item, ...);
 void               
etk_combobox_entry_item_fields_set_valist(Etk_Combobox_Entry_Item *item, 
va_list args);
+void               etk_combobox_entry_item_field_set(Etk_Combobox_Entry_Item 
*item, int column, void * value);
 void               etk_combobox_entry_item_fields_get(Etk_Combobox_Entry_Item 
*item, ...);
 void               
etk_combobox_entry_item_fields_get_valist(Etk_Combobox_Entry_Item *item, 
va_list args);
+void *             etk_combobox_entry_item_field_get(Etk_Combobox_Entry_Item 
*item, int column);
 
 void               etk_combobox_entry_item_data_set(Etk_Combobox_Entry_Item 
*item, void *data);
 void               
etk_combobox_entry_item_data_set_full(Etk_Combobox_Entry_Item *item, void 
*data, void (*free_cb)(void *data));



-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to