forked from enlightenment/enlightenment
entry - read only mode (noedit) should be supported and use it from
file preview too... SVN revision: 79368
This commit is contained in:
parent
6004ba2eaa
commit
1da5608d7b
|
@ -100,6 +100,12 @@ group { name: "e/widgets/entry/text";
|
|||
action: STATE_SET "default" 0.0;
|
||||
target: "e.text.text";
|
||||
}
|
||||
// program {
|
||||
// signal: "e,state,noedit"; source: "e";
|
||||
// }
|
||||
// program {
|
||||
// signal: "e,state,edit"; source: "e";
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -11,14 +11,15 @@ struct _E_Entry_Smart_Data
|
|||
E_Menu *popup;
|
||||
Ecore_Event_Handler *selection_handler;
|
||||
|
||||
int enabled;
|
||||
int focused;
|
||||
int min_width;
|
||||
int height;
|
||||
Evas_Coord theme_width;
|
||||
Evas_Coord theme_height;
|
||||
int preedit_start_pos;
|
||||
int preedit_end_pos;
|
||||
Eina_Bool enabled : 1;
|
||||
Eina_Bool noedit : 1;
|
||||
Eina_Bool focused : 1;
|
||||
Eina_Bool password_mode : 1;
|
||||
Eina_Bool have_preedit : 1;
|
||||
};
|
||||
|
@ -241,7 +242,7 @@ e_entry_focus(Evas_Object *entry)
|
|||
edje_object_signal_emit(sd->entry_object, "e,state,focused", "e");
|
||||
|
||||
edje_object_part_text_cursor_end_set(sd->entry_object, ENTRY_PART_NAME, EDJE_CURSOR_MAIN);
|
||||
if (sd->enabled)
|
||||
if ((sd->enabled) && (!sd->noedit))
|
||||
edje_object_signal_emit(sd->entry_object, "e,action,show,cursor", "e");
|
||||
sd->focused = 1;
|
||||
}
|
||||
|
@ -318,6 +319,54 @@ e_entry_disable(Evas_Object *entry)
|
|||
sd->enabled = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enables the entry object: the user will be able to type text
|
||||
*
|
||||
* @param entry the entry object to enable
|
||||
*/
|
||||
EAPI void
|
||||
e_entry_edit(Evas_Object *entry)
|
||||
{
|
||||
E_Entry_Smart_Data *sd;
|
||||
|
||||
if (evas_object_smart_smart_get(entry) != _e_entry_smart) SMARTERRNR();
|
||||
if ((!entry) || (!(sd = evas_object_smart_data_get(entry))))
|
||||
return;
|
||||
if (sd->noedit)
|
||||
return;
|
||||
|
||||
edje_object_signal_emit(e_scrollframe_edje_object_get(sd->scroll_object),
|
||||
"e,state,edit", "e");
|
||||
edje_object_signal_emit(sd->entry_object, "e,state,edit", "e");
|
||||
if (sd->focused)
|
||||
edje_object_signal_emit(sd->entry_object, "e,action,show,cursor", "e");
|
||||
sd->noedit = 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Disables the entry object: the user won't be able to type anymore. Selection
|
||||
* will still be possible (to copy the text)
|
||||
*
|
||||
* @param entry the entry object to disable
|
||||
*/
|
||||
EAPI void
|
||||
e_entry_noedit(Evas_Object *entry)
|
||||
{
|
||||
E_Entry_Smart_Data *sd;
|
||||
|
||||
if (evas_object_smart_smart_get(entry) != _e_entry_smart) SMARTERRNR();
|
||||
if ((!entry) || (!(sd = evas_object_smart_data_get(entry))))
|
||||
return;
|
||||
if (!sd->noedit)
|
||||
return;
|
||||
|
||||
edje_object_signal_emit(e_scrollframe_edje_object_get(sd->scroll_object),
|
||||
"e,state,noedit", "e");
|
||||
edje_object_signal_emit(sd->entry_object, "e,state,noedit", "e");
|
||||
edje_object_signal_emit(sd->entry_object, "e,action,hide,cursor", "e");
|
||||
sd->noedit = 0;
|
||||
}
|
||||
|
||||
|
||||
/* Private functions */
|
||||
|
||||
|
@ -382,20 +431,23 @@ _e_entry_mouse_down_cb(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *o
|
|||
{
|
||||
if (s_enabled)
|
||||
{
|
||||
mi = e_menu_item_new(sd->popup);
|
||||
e_menu_item_label_set(mi, _("Delete"));
|
||||
e_util_menu_item_theme_icon_set(mi, "edit-delete");
|
||||
e_menu_item_callback_set(mi, _e_entry_cb_delete, sd);
|
||||
|
||||
mi = e_menu_item_new(sd->popup);
|
||||
e_menu_item_separator_set(mi, 1);
|
||||
|
||||
if (!s_passwd)
|
||||
if (!sd->noedit)
|
||||
{
|
||||
mi = e_menu_item_new(sd->popup);
|
||||
e_menu_item_label_set(mi, _("Cut"));
|
||||
e_util_menu_item_theme_icon_set(mi, "edit-cut");
|
||||
e_menu_item_callback_set(mi, _e_entry_cb_cut, sd);
|
||||
e_menu_item_label_set(mi, _("Delete"));
|
||||
e_util_menu_item_theme_icon_set(mi, "edit-delete");
|
||||
e_menu_item_callback_set(mi, _e_entry_cb_delete, sd);
|
||||
|
||||
mi = e_menu_item_new(sd->popup);
|
||||
e_menu_item_separator_set(mi, 1);
|
||||
|
||||
if (!s_passwd)
|
||||
{
|
||||
mi = e_menu_item_new(sd->popup);
|
||||
e_menu_item_label_set(mi, _("Cut"));
|
||||
e_util_menu_item_theme_icon_set(mi, "edit-cut");
|
||||
e_menu_item_callback_set(mi, _e_entry_cb_cut, sd);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!s_passwd)
|
||||
|
@ -408,10 +460,13 @@ _e_entry_mouse_down_cb(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *o
|
|||
}
|
||||
if (sd->enabled)
|
||||
{
|
||||
mi = e_menu_item_new(sd->popup);
|
||||
e_menu_item_label_set(mi, _("Paste"));
|
||||
e_util_menu_item_theme_icon_set(mi, "edit-paste");
|
||||
e_menu_item_callback_set(mi, _e_entry_cb_paste, sd);
|
||||
if (!sd->noedit)
|
||||
{
|
||||
mi = e_menu_item_new(sd->popup);
|
||||
e_menu_item_label_set(mi, _("Paste"));
|
||||
e_util_menu_item_theme_icon_set(mi, "edit-paste");
|
||||
e_menu_item_callback_set(mi, _e_entry_cb_paste, sd);
|
||||
}
|
||||
}
|
||||
if (!s_empty)
|
||||
{
|
||||
|
@ -505,6 +560,7 @@ _entry_paste_request_signal_cb(void *data,
|
|||
Ecore_X_Window xwin;
|
||||
E_Win *win;
|
||||
E_Container *con;
|
||||
|
||||
if (!(win = e_win_evas_object_win_get(data)))
|
||||
{
|
||||
con = e_container_evas_object_container_get(data);
|
||||
|
@ -641,6 +697,7 @@ _e_entry_smart_add(Evas_Object *object)
|
|||
evas_object_smart_data_set(object, sd);
|
||||
|
||||
sd->enabled = 1;
|
||||
sd->noedit = 0;
|
||||
sd->focused = 0;
|
||||
|
||||
sd->scroll_object = e_scrollframe_add(evas);
|
||||
|
@ -814,9 +871,9 @@ _e_entry_clip_unset(Evas_Object *object)
|
|||
static void
|
||||
_e_entry_cb_menu_post(void *data, E_Menu *m __UNUSED__)
|
||||
{
|
||||
E_Entry_Smart_Data *sd;
|
||||
E_Entry_Smart_Data *sd = data;
|
||||
|
||||
sd = data;
|
||||
if (!sd) return;
|
||||
if (!sd->popup) return;
|
||||
e_object_del(E_OBJECT(sd->popup));
|
||||
sd->popup = NULL;
|
||||
|
@ -826,20 +883,21 @@ static void
|
|||
_e_entry_cb_cut(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi __UNUSED__)
|
||||
{
|
||||
E_Entry_Smart_Data *sd = data;
|
||||
if (!sd) return;
|
||||
_e_entry_cb_copy(sd, NULL, NULL);
|
||||
if ((!sd->enabled) || (sd->noedit)) return;
|
||||
edje_object_part_text_user_insert(sd->entry_object, ENTRY_PART_NAME, "");
|
||||
}
|
||||
|
||||
static void
|
||||
_e_entry_cb_copy(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi __UNUSED__)
|
||||
{
|
||||
E_Entry_Smart_Data *sd;
|
||||
E_Entry_Smart_Data *sd = data;
|
||||
const char *range;
|
||||
Ecore_X_Window xwin;
|
||||
E_Win *win;
|
||||
|
||||
sd = data;
|
||||
|
||||
if (!sd) return;
|
||||
range = edje_object_part_text_selection_get(sd->entry_object, ENTRY_PART_NAME);
|
||||
if (range)
|
||||
{
|
||||
|
@ -865,7 +923,8 @@ _e_entry_cb_paste(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi __UNUSED__)
|
|||
E_Win *win;
|
||||
|
||||
sd = data;
|
||||
if (!sd->enabled) return;
|
||||
if (!sd) return;
|
||||
if ((!sd->enabled) || (sd->noedit)) return;
|
||||
|
||||
win = e_win_evas_object_win_get(sd->entry_object);
|
||||
if (win) xwin = win->evas_win;
|
||||
|
@ -886,6 +945,7 @@ _e_entry_cb_select_all(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi __UNUSE
|
|||
E_Entry_Smart_Data *sd;
|
||||
|
||||
sd = data;
|
||||
if (!sd) return;
|
||||
edje_object_part_text_select_all(sd->entry_object, ENTRY_PART_NAME);
|
||||
_e_entry_x_selection_update(sd->entry_object);
|
||||
}
|
||||
|
@ -896,7 +956,8 @@ _e_entry_cb_delete(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi __UNUSED__)
|
|||
E_Entry_Smart_Data *sd;
|
||||
|
||||
sd = data;
|
||||
if (!sd) return;
|
||||
if ((!sd->enabled) || (sd->noedit)) return;
|
||||
edje_object_part_text_user_insert(sd->entry_object, ENTRY_PART_NAME, "");
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -15,6 +15,8 @@ EAPI void e_entry_focus (Evas_Object *entry);
|
|||
EAPI void e_entry_unfocus (Evas_Object *entry);
|
||||
EAPI void e_entry_enable (Evas_Object *entry);
|
||||
EAPI void e_entry_disable (Evas_Object *entry);
|
||||
EAPI void e_entry_edit (Evas_Object *entry);
|
||||
EAPI void e_entry_noedit (Evas_Object *entry);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -169,9 +169,9 @@ e_widget_entry_readonly_set(Evas_Object *entry, int readonly_mode)
|
|||
return;
|
||||
|
||||
if (readonly_mode)
|
||||
e_entry_disable(wd->o_entry);
|
||||
e_entry_noedit(wd->o_entry);
|
||||
else
|
||||
e_entry_enable(wd->o_entry);
|
||||
e_entry_edit(wd->o_entry);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -207,20 +207,17 @@ _e_wid_fprev_preview_video_widgets(E_Widget_Data *wd)
|
|||
_e_wid_fprev_clear_widgets(wd);
|
||||
|
||||
o = e_widget_table_add(evas, 0);
|
||||
e_widget_disabled_set(o, 1);
|
||||
wd->o_preview_properties_table = o;
|
||||
|
||||
#define WIDROW(lab, labob, entob, entw) \
|
||||
do { \
|
||||
o = e_widget_label_add(evas, lab); \
|
||||
e_widget_disabled_set(o, 1); \
|
||||
wd->labob = o; \
|
||||
e_widget_table_object_align_append(wd->o_preview_properties_table, \
|
||||
wd->labob, \
|
||||
0, y, 1, 1, 0, 1, 0, 0, 1.0, 0.0); \
|
||||
o = e_widget_entry_add(evas, &(wd->preview_extra_text), NULL, NULL, NULL); \
|
||||
e_widget_entry_readonly_set(o, 1); \
|
||||
e_widget_disabled_set(o, 1); \
|
||||
wd->entob = o; \
|
||||
e_widget_size_min_set(o, entw, -1); \
|
||||
e_widget_table_object_align_append(wd->o_preview_properties_table, \
|
||||
|
@ -286,20 +283,17 @@ _e_wid_fprev_preview_fs_widgets(E_Widget_Data *wd, Eina_Bool mount_point)
|
|||
_e_wid_fprev_clear_widgets(wd);
|
||||
|
||||
o = e_widget_table_add(evas, 0);
|
||||
e_widget_disabled_set(o, 1);
|
||||
wd->o_preview_properties_table = o;
|
||||
|
||||
#define WIDROW(lab, labob, entob, entw) \
|
||||
do { \
|
||||
o = e_widget_label_add(evas, lab); \
|
||||
e_widget_disabled_set(o, 1); \
|
||||
wd->labob = o; \
|
||||
e_widget_table_object_align_append(wd->o_preview_properties_table, \
|
||||
wd->labob, \
|
||||
0, y, 1, 1, 0, 1, 0, 0, 1.0, 0.0); \
|
||||
o = e_widget_entry_add(evas, &(wd->preview_extra_text), NULL, NULL, NULL); \
|
||||
e_widget_entry_readonly_set(o, 1); \
|
||||
e_widget_disabled_set(o, 1); \
|
||||
wd->entob = o; \
|
||||
e_widget_size_min_set(o, entw, -1); \
|
||||
e_widget_table_object_align_append(wd->o_preview_properties_table, \
|
||||
|
@ -345,7 +339,6 @@ _e_wid_fprev_preview_file_widgets(E_Widget_Data *wd, Eina_Bool dir, Eina_Bool tx
|
|||
_e_wid_fprev_clear_widgets(wd);
|
||||
|
||||
o = e_widget_table_add(evas, 0);
|
||||
e_widget_disabled_set(o, 1);
|
||||
wd->o_preview_preview_table = o;
|
||||
e_widget_size_min_set(o, 32, 32);
|
||||
|
||||
|
@ -354,7 +347,6 @@ _e_wid_fprev_preview_file_widgets(E_Widget_Data *wd, Eina_Bool dir, Eina_Bool tx
|
|||
0, 1, 0.5);
|
||||
|
||||
o = e_widget_table_add(evas, 0);
|
||||
e_widget_disabled_set(o, 1);
|
||||
wd->o_preview_properties_table = o;
|
||||
wd->is_dir = dir;
|
||||
wd->is_txt = txt;
|
||||
|
@ -737,7 +729,6 @@ _e_wid_fprev_preview_reset(E_Widget_Data *wd)
|
|||
if (wd->is_dir || wd->is_txt) return;
|
||||
o = e_widget_preview_add(evas_object_evas_get(wd->obj), wd->w, wd->h);
|
||||
wd->prev_is_txt = wd->prev_is_fm = EINA_FALSE;
|
||||
e_widget_disabled_set(o, 1);
|
||||
wd->o_preview_preview = o;
|
||||
evas_object_smart_callback_add(o, "preview_update",
|
||||
_e_wid_fprev_preview_update, wd);
|
||||
|
@ -979,7 +970,6 @@ e_widget_filepreview_add(Evas *evas, int w, int h, int horiz)
|
|||
wd->w = w, wd->h = h;
|
||||
|
||||
o = e_widget_list_add(evas, 0, horiz);
|
||||
e_widget_disabled_set(o, 1);
|
||||
wd->o_preview_list = o;
|
||||
e_widget_resize_object_set(obj, o);
|
||||
e_widget_sub_object_add(obj, o);
|
||||
|
@ -999,7 +989,6 @@ e_widget_filepreview_add(Evas *evas, int w, int h, int horiz)
|
|||
evas_object_show(wd->o_preview_time_entry);
|
||||
evas_object_show(wd->o_preview_properties_table);
|
||||
evas_object_show(wd->o_preview_list);
|
||||
e_widget_disabled_set(obj, 1);
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue