Re: [E-devel] etk_entry text length limit patch

2008-05-05 Thread Jeremy
Hi, List:
Is this patch OK that can be commit ?
or are there any progress for this patch?

Cause I also need this to limit text length of a message that will 
be sent out via SMS.

Thanks for any information.

Sincerely.
Jeremy Chang


Tick wrote:
 Hi List,
Since we need to limit the entered text length, we create a patch 
 the allow etk_entry to to that
 Adding two functions:

 void etk_entry_text_set(Etk_Entry *entry, const char *text)
 int etk_entry_text_limit_get(Etk_Entry *entry)
 let programmer's to limit the max input length of etk_entry.
 if set to 0 that means no limited. default is 0

 Cheers, Tick

 

 ___
 Assassin-devel mailing list
 [EMAIL PROTECTED]
 http://lists.projects.openmoko.org/cgi-bin/mailman/listinfo/assassin-devel


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] etk_entry text length limit patch

2008-05-05 Thread Hisham Mardam Bey
On Mon, May 5, 2008 at 2:58 AM, Jeremy [EMAIL PROTECTED] wrote:
 Hi, List:
 Is this patch OK that can be commit ?
 or are there any progress for this patch?

 Cause I also need this to limit text length of a message that will
  be sent out via SMS.


Patch is ok - I think I have it pending in my commit list, i'll take
care of it (=

-- 
Hisham Mardam Bey
http://hisham.cc/
+1-514-966-8359
Codito Ergo Sum (I Code Therefore I Am)

-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[E-devel] etk_entry text length limit patch

2008-04-29 Thread Tick

Hi List,
   Since we need to limit the entered text length, we create a patch 
the allow etk_entry to to that

Adding two functions:

void etk_entry_text_set(Etk_Entry *entry, const char *text)
int etk_entry_text_limit_get(Etk_Entry *entry) 


let programmer's to limit the max input length of etk_entry.
if set to 0 that means no limited. 
default is 0


Cheers, 
Tick


Index: etk/src/lib/etk_entry.c
===
--- etk.orig/src/lib/etk_entry.c	2008-04-29 16:09:01.0 +0800
+++ etk/src/lib/etk_entry.c	2008-04-29 16:12:24.0 +0800
@@ -1,5 +1,6 @@
 /** @file etk_entry.c */
 #ifdef HAVE_CONFIG_H
+#define _GNU_SOURCE
 #include config.h
 #endif
 
@@ -126,6 +127,7 @@
  */
 void etk_entry_text_set(Etk_Entry *entry, const char *text)
 {
+   char *text_tmp;
if (!entry)
   return;
 
@@ -134,11 +136,15 @@
   if (entry-text != text)
   {
  free(entry-text);
- entry-text = text ? strdup(text) : NULL;
+ entry-text = text ? entry-text_limit==0 ? strdup(text) : strndup(text, entry-text_limit) : NULL;
   }
}
-   else
-  etk_editable_text_set(entry-editable_object, text);
+   else 
+   {
+  text_tmp = !text || entry-text_limit==0 ? strdup(text) : strndup(text, entry-text_limit);
+  etk_editable_text_set(entry-editable_object, text_tmp);
+  free(text_tmp);
+   }
 
etk_signal_emit(ETK_ENTRY_TEXT_CHANGED_SIGNAL, ETK_OBJECT(entry));
 }
@@ -159,6 +165,37 @@
   return etk_editable_text_get(entry-editable_object);
 }
 
+
+/**
+ * @brief Set the text limit of the entry
+ * @param entry an entry
+ * @param limit the limit of text length, 0 means no limit
+ */
+void etk_entry_text_limit_set(Etk_Entry *entry, int limit) 
+{
+   if (!entry) 
+  return;
+   if (limit = 0)
+   {
+  entry-text_limit = limit;
+  return;
+   }
+   entry-text_limit = 0;
+   return;
+}
+
+/**
+ * @brief Get the text limit of the entry
+ * @param entry an entry
+ * @return Returns the limit of text entry, 0 means no limit. 
+ */ 
+int etk_entry_text_limit_get(Etk_Entry *entry) 
+{
+   if (!entry)
+  return -1;
+   return entry-text_limit;
+}
+
 /**
  * @brief Clears the text of the entry
  * @param entry the entry to clear
@@ -375,6 +412,7 @@
entry-imf_ee_handler_commit = NULL;
entry-imf_ee_handler_delete = NULL;
entry-text = NULL;
+   entry-text_limit=0;
 
entry-internal_entry = etk_widget_new(ETK_WIDGET_TYPE, repeat-mouse-events, ETK_TRUE,
  theme-group, entry, theme-parent, entry, parent, entry, internal, ETK_TRUE, NULL);
@@ -562,6 +600,7 @@
Evas *evas;
const char *ctx_id;
const Ecore_IMF_Context_Info *ctx_info;
+   char *text_tmp;
 
if (!(internal_entry = ETK_WIDGET(object)) || !(evas = etk_widget_toplevel_evas_get(internal_entry)))
   return ETK_TRUE;
@@ -609,7 +648,14 @@
 
etk_editable_theme_set(entry-editable_object, etk_widget_theme_file_get(internal_entry),
  etk_widget_theme_group_get(internal_entry));
-   etk_editable_text_set(entry-editable_object, entry-text);
+   if (entry-text_limit==0) 
+  etk_editable_text_set(entry-editable_object, entry-text);
+   else 
+   {
+  text_tmp = entry-text ? strndup(entry-text, entry-text_limit): NULL; 
+  etk_editable_text_set(entry-editable_object, text_tmp);
+  free(text_tmp);
+   }
etk_editable_password_mode_set(entry-editable_object, entry-password_mode);
 
if (!etk_widget_is_focused(ETK_WIDGET(entry)))
@@ -665,6 +711,7 @@
 {
Etk_Entry *entry;
const char *text;
+   char *text_tmp;
 
if (!(entry = ETK_ENTRY(etk_object_data_get(object, _Etk_Entry::Entry
   return ETK_TRUE;
@@ -689,7 +736,12 @@
 
free(entry-text);
if ((text = etk_editable_text_get(entry-editable_object)))
-  entry-text = strdup(text);
+   { 
+  if (entry-text_limit==0)
+ entry-text = strdup(text);
+  else 
+ entry-text = strndup(text, entry-text_limit);
+   }
else
   entry-text = NULL;
 
@@ -823,7 +875,9 @@
{
   if (selecting)
  changed |= etk_editable_delete(editable, start_pos, end_pos);
-  changed |= etk_editable_insert(editable, start_pos, event-string);
+  if (!entry-text_limit || 
+(etk_editable_text_length_get(editable) + strlen(event-string)) = entry-text_limit)
+ changed |= etk_editable_insert(editable, start_pos, event-string);
}
else
   stop_signal = ETK_FALSE;
@@ -1187,7 +1241,9 @@
 
   if (selecting)
  changed |= etk_editable_delete(editable, start_pos, end_pos);
-  changed |= etk_editable_insert(editable, start_pos, text);
+  if (!entry-text_limit || 
+etk_editable_text_length_get(editable) + strlen(text) = entry-text_limit)
+ changed |= etk_editable_insert(editable, start_pos, text);
 
   if (changed)
  etk_signal_emit(ETK_ENTRY_TEXT_CHANGED_SIGNAL, ETK_OBJECT(entry));
@@ -1286,7 +1342,9 @@
 
if (selecting)
   changed |=