handle callbacks

SVN revision: 4329
This commit is contained in:
Carsten Haitzler 2001-03-06 16:40:57 +00:00
parent ceab19042f
commit ec7f81fa76
2 changed files with 63 additions and 2 deletions

View File

@ -559,6 +559,14 @@ struct _E_Entry
Evas_Object text; Evas_Object text;
Window paste_win; Window paste_win;
Window selection_win; Window selection_win;
void (*func_changed) (E_Entry *entry, void *data);
void *data_changed;
void (*func_enter) (E_Entry *entry, void *data);
void *data_enter;
void (*func_focus_in) (E_Entry *entry, void *data);
void *data_focus_in;
void (*func_focus_out) (E_Entry *entry, void *data);
void *data_focus_out;
}; };
void e_entry_init(void); void e_entry_init(void);

View File

@ -73,6 +73,8 @@ e_paste_request(Eevent * ev)
free(str2); free(str2);
entry->cursor_pos+=strlen(type); entry->cursor_pos+=strlen(type);
e_entry_configure(entry); e_entry_configure(entry);
if (entry->func_changed)
entry->func_changed(entry, entry->data_changed);
} }
} }
} }
@ -198,7 +200,6 @@ e_entry_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
len = strlen(entry->buffer) - entry->select.start; len = strlen(entry->buffer) - entry->select.start;
str2 = e_memdup(&(entry->buffer[entry->select.start]), len + 1); str2 = e_memdup(&(entry->buffer[entry->select.start]), len + 1);
str2[len] = 0; str2[len] = 0;
printf(">%s<\n", str2);
if (entry->selection_win) e_window_destroy(entry->selection_win); if (entry->selection_win) e_window_destroy(entry->selection_win);
entry->selection_win = e_selection_set(str2); entry->selection_win = e_selection_set(str2);
} }
@ -375,6 +376,8 @@ e_entry_handle_keypress(E_Entry *entry, Ev_Key_Down *e)
e_entry_set_text(entry, str2); e_entry_set_text(entry, str2);
free(str2); free(str2);
} }
if (entry->func_changed)
entry->func_changed(entry, entry->data_changed);
} }
else if (!strcmp(e->key, "Delete")) else if (!strcmp(e->key, "Delete"))
{ {
@ -398,6 +401,8 @@ e_entry_handle_keypress(E_Entry *entry, Ev_Key_Down *e)
e_entry_set_text(entry, str2); e_entry_set_text(entry, str2);
free(str2); free(str2);
} }
if (entry->func_changed)
entry->func_changed(entry, entry->data_changed);
} }
else if (!strcmp(e->key, "Insert")) else if (!strcmp(e->key, "Insert"))
{ {
@ -423,12 +428,13 @@ e_entry_handle_keypress(E_Entry *entry, Ev_Key_Down *e)
else if (!strcmp(e->key, "Return")) else if (!strcmp(e->key, "Return"))
{ {
entry->focused = 0; entry->focused = 0;
if (entry->func_enter)
entry->func_enter(entry, entry->data_enter);
} }
else else
{ {
char *type; char *type;
printf("%s\n", e->key);
type = e_key_press_translate_into_typeable(e); type = e_key_press_translate_into_typeable(e);
if (type) if (type)
{ {
@ -448,6 +454,8 @@ e_entry_handle_keypress(E_Entry *entry, Ev_Key_Down *e)
str2[entry->cursor_pos] = 0; str2[entry->cursor_pos] = 0;
e_entry_set_text(entry, str2); e_entry_set_text(entry, str2);
free(str2); free(str2);
if (entry->func_changed)
entry->func_changed(entry, entry->data_changed);
} }
else if (strlen(type) > 0) else if (strlen(type) > 0)
{ {
@ -472,6 +480,8 @@ e_entry_handle_keypress(E_Entry *entry, Ev_Key_Down *e)
e_entry_set_text(entry, str2); e_entry_set_text(entry, str2);
free(str2); free(str2);
entry->cursor_pos+=strlen(type); entry->cursor_pos+=strlen(type);
if (entry->func_changed)
entry->func_changed(entry, entry->data_changed);
} }
} }
} }
@ -558,13 +568,26 @@ e_entry_resize(E_Entry *entry, int w, int h)
void void
e_entry_query_max_size(E_Entry *entry, int *w, int *h) e_entry_query_max_size(E_Entry *entry, int *w, int *h)
{ {
if (w) *w = evas_get_text_width(entry->evas, entry->text);
if (h) *h = evas_get_text_height(entry->evas, entry->text);
} }
void void
e_entry_set_focus(E_Entry *entry, int focused) e_entry_set_focus(E_Entry *entry, int focused)
{ {
if (entry->focused == focused) return;
entry->focused = focused; entry->focused = focused;
e_entry_configure(entry); e_entry_configure(entry);
if (entry->focused)
{
if (entry->func_focus_in)
entry->func_focus_in(entry, entry->data_focus_in);
}
else
{
if (entry->func_focus_out)
entry->func_focus_out(entry, entry->data_focus_out);
}
} }
void void
@ -576,6 +599,8 @@ e_entry_set_text(E_Entry *entry, const char *text)
if (entry->cursor_pos > strlen(entry->buffer)) if (entry->cursor_pos > strlen(entry->buffer))
entry->cursor_pos = strlen(entry->buffer); entry->cursor_pos = strlen(entry->buffer);
e_entry_configure(entry); e_entry_configure(entry);
if (entry->func_changed)
entry->func_changed(entry, entry->data_changed);
} }
const char * const char *
@ -596,3 +621,31 @@ e_entry_get_curosr(E_Entry *entry)
{ {
return entry->cursor_pos; return entry->cursor_pos;
} }
void
e_entry_set_changed_callback(E_Entry *entry, void (*func) (E_Entry *_entry, void *_data), void *data)
{
entry->func_changed = func;
entry->data_changed = data;
}
void
e_entry_set_enter_callback(E_Entry *entry, void (*func) (E_Entry *_entry, void *_data), void *data)
{
entry->func_enter = func;
entry->data_enter = data;
}
void
e_entry_set_focus_in_callback(E_Entry *entry, void (*func) (E_Entry *_entry, void *_data), void *data)
{
entry->func_focus_in = func;
entry->data_focus_in = data;
}
void
e_entry_set_focus_out_callback(E_Entry *entry, void (*func) (E_Entry *_entry, void *_data), void *data)
{
entry->func_focus_out = func;
entry->data_focus_out = data;
}