Enlightenment CVS committal
Author : pfritz
Project : e17
Module : libs/ewl
Dir : e17/libs/ewl/src/lib
Modified Files:
Ewl.h Makefile.am ewl_entry.c ewl_entry.h ewl_text.c
ewl_text.h
Log Message:
*API BREAK*
replace ewl_password by ewl_text_obscure_set()
===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/Ewl.h,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -3 -r1.36 -r1.37
--- Ewl.h 27 Feb 2008 03:52:45 -0000 1.36
+++ Ewl.h 4 Apr 2008 00:25:49 -0000 1.37
@@ -46,7 +46,6 @@
#include <ewl_colorpicker.h>
#include <ewl_colordialog.h>
-#include <ewl_password.h>
#include <ewl_range.h>
#include <ewl_seeker.h>
#include <ewl_scrollbar.h>
===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/Makefile.am,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -3 -r1.61 -r1.62
--- Makefile.am 14 Dec 2007 08:44:26 -0000 1.61
+++ Makefile.am 4 Apr 2008 00:25:49 -0000 1.62
@@ -70,7 +70,6 @@
ewl_object.h \
ewl_overlay.h \
ewl_paned.h \
- ewl_password.h \
ewl_popup.h \
ewl_progressbar.h \
ewl_radiobutton.h \
@@ -154,7 +153,6 @@
ewl_object.c \
ewl_overlay.c \
ewl_paned.c \
- ewl_password.c \
ewl_popup.c \
ewl_progressbar.c \
ewl_radiobutton.c \
@@ -196,6 +194,7 @@
libewl_la_LIBADD = $(GCOV_LIBS) @EMOTION_LIBS@ @EPSILON_LIBS@ @EFREET_LIBS@
@EDJE_LIBS@ @ECORE_LIBS@ @EVAS_LIBS@ -lm
libewl_la_LDFLAGS = @create_shared_lib@ -version-info @INTERFACE_VERSION@
+libewl_la_LIBTOOLFLAGS =
clean-local:
@rm -f *.gcno
===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_entry.c,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -3 -r1.82 -r1.83
--- ewl_entry.c 6 Jan 2008 19:17:12 -0000 1.82
+++ ewl_entry.c 4 Apr 2008 00:25:49 -0000 1.83
@@ -111,6 +111,27 @@
}
/**
+ * @return Returns a new password widget on success, NULL on failure.
+ * @brief Allocate and initialize a new password widget
+ *
+ * A password widget is an entry with a set obscure character. The default is a
+ * star (*)
+ */
+Ewl_Widget *
+ewl_password_new(void)
+{
+ Ewl_Widget *e;
+
+ DENTER_FUNCTION(DLEVEL_STABLE);
+
+ e = ewl_entry_new();
+ ewl_widget_appearance_set(e, "password/"EWL_ENTRY_TYPE);
+ ewl_text_obscure_set(EWL_TEXT(e), "*");
+
+ DRETURN_PTR(e, DLEVEL_STABLE);
+}
+
+/**
* @param e: The Ewl_Entry to initialize
* @return Returns TRUE on success or FALSE on failure
* @brief Initializes an Ewl_Entry widget to default values
===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_entry.h,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -3 -r1.31 -r1.32
--- ewl_entry.h 6 Jan 2008 19:17:12 -0000 1.31
+++ ewl_entry.h 4 Apr 2008 00:25:49 -0000 1.32
@@ -66,6 +66,7 @@
};
Ewl_Widget *ewl_entry_new(void);
+Ewl_Widget *ewl_password_new(void);
int ewl_entry_init(Ewl_Entry *e);
void ewl_entry_multiline_set(Ewl_Entry *e, unsigned int multiline);
===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_text.c,v
retrieving revision 1.190
retrieving revision 1.191
diff -u -3 -r1.190 -r1.191
--- ewl_text.c 6 Dec 2007 13:31:17 -0000 1.190
+++ ewl_text.c 4 Apr 2008 00:25:50 -0000 1.191
@@ -744,6 +744,59 @@
}
/**
+ * @param e: the text to set the obscuring character
+ * @param o: the character to obscure the password characters. This need to be
+ * a string, because UTF-8 characters can be longer then one byte.
+ * If it is not a valid UTF-8 character it will fallback to an
+ * asterix (*). NULL will turn the option off and let the text widget
+ * return to the normal text view.
+ * @return Returns no value.
+ * @brief Sets the character used to obscure the text for a password. Every
+ * character will be replaced by this character on the output.
+ */
+void
+ewl_text_obscure_set(Ewl_Text *t, const char *o)
+{
+ DENTER_FUNCTION(DLEVEL_STABLE);
+ DCHECK_PARAM_PTR(t);
+ DCHECK_TYPE(t, EWL_TEXT_TYPE);
+
+ /* free the old character */
+ IF_FREE(t->obscure);
+
+ /* do some checking */
+ if (ewl_text_char_utf8_is(o)) {
+ size_t len;
+
+ len = EWL_TEXT_CHAR_BYTE_LEN(o);
+ t->obscure = NEW(char, len + 1);
+ memcpy(t->obscure, o, len);
+ t->obscure[len] = 0;
+ }
+ else
+ t->obscure = strdup("*");
+
+ DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
+/**
+ * @param t: the text to retrieve the obscuring character
+ * @return Returns the character value of the obscuring character. This is
+ * a null-terminated string containing an UTF-8 character or NULL
+ * if the text isn't set to obscure the text.
+ * @brief Retrieves the character used to obscure the text for a password.
+ */
+const char *
+ewl_text_obscure_get(Ewl_Text *t)
+{
+ DENTER_FUNCTION(DLEVEL_STABLE);
+ DCHECK_PARAM_PTR_RET(t, 0);
+ DCHECK_TYPE_RET(t, EWL_TEXT_TYPE, 0);
+
+ DRETURN_INT(t->obscure, DLEVEL_STABLE);
+}
+
+/**
* @param t: The text to set the selectable value of
* @param selectable: The selectable value to set
* @return Returns no value
@@ -2948,15 +3001,36 @@
if (node->tx != ewl_text_default_context)
evas_textblock_cursor_format_append(cursor, node->tx->format);
- ptr = t->text + byte_idx;
- tmp = *(ptr + node->byte_len);
- if (strlen(ptr) < node->byte_len)
- DWARNING("Byte length of node %u overruns actual text %d",
- node->byte_len, (int)strlen(ptr));
- *(ptr + node->byte_len) = '\0';
+ if (!t->obscure)
+ {
+ ptr = t->text + byte_idx;
+ tmp = *(ptr + node->byte_len);
+ if (strlen(ptr) < node->byte_len)
+ DWARNING("Byte length of node %u overruns actual"
+ " text %d", node->byte_len, (int)strlen(ptr));
+ *(ptr + node->byte_len) = '\0';
- ewl_text_plaintext_parse(t->textblock, ptr);
- *(ptr + node->byte_len) = tmp;
+ ewl_text_plaintext_parse(t->textblock, ptr);
+ *(ptr + node->byte_len) = tmp;
+ }
+ else
+ {
+ char *otxt;
+ size_t len;
+
+ int i;
+
+ len = strlen(t->obscure);
+ otxt = alloca(len * node->char_len + 1);
+ ptr = otxt;
+ for (i = 0; i < node->char_len; i++)
+ {
+ memcpy(ptr, t->obscure, len);
+ ptr += len;
+ }
+ *ptr = '\0';
+ ewl_text_plaintext_parse(t->textblock, otxt);
+ }
evas_textblock_cursor_format_append(cursor, "-");
@@ -3334,6 +3408,7 @@
t = EWL_TEXT(w);
+ IF_FREE(t->obscure);
/* Note, we don't explictly destroy the triggers or the selection
* because they will be cleared, because they are children of the
* text widget itself */
===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_text.h,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -3 -r1.61 -r1.62
--- ewl_text.h 11 Nov 2007 06:07:46 -0000 1.61
+++ ewl_text.h 4 Apr 2008 00:25:50 -0000 1.62
@@ -71,7 +71,8 @@
void *textblock; /**< The Evas_Object_Textblock */
char *text; /**< The text itself */
-
+ char *obscure; /**< The utf8 character to be displayed
+ instead of the real text */
struct
{
unsigned int chars; /**< Number of characters in the text */
@@ -131,6 +132,8 @@
void ewl_text_text_insert(Ewl_Text *t, const char *text,
unsigned int char_idx);
void ewl_text_text_delete(Ewl_Text *t, unsigned int length);
+
+void ewl_text_obscure_set(Ewl_Text *t, const char *utf8_character);
void ewl_text_selectable_set(Ewl_Text *t, unsigned int selectable);
unsigned int ewl_text_selectable_get(Ewl_Text *t);
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs