support a guide text for editor ctxpopup.

introduce a new smart callback "ctxpopup,activated"

@feature
This commit is contained in:
Hermet Park 2016-02-09 17:50:34 +09:00
parent ab0dab409c
commit fe41adaa28
8 changed files with 43 additions and 3 deletions

View File

@ -452,6 +452,14 @@ enventor_program_run_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
stats_info_msg_update(buf);
}
static void
enventor_ctxpopup_activated_cb(void *data, Evas_Object *obj, void *event_info)
{
Enventor_Ctxpopup_Type type = (Enventor_Ctxpopup_Type) event_info;
if (type != ENVENTOR_CTXPOPUP_TYPE_SLIDER) return;
stats_info_msg_update("You could use a mouse wheel to change values elaborately.");
}
static void
enventor_ctxpopup_changed_cb(void *data, Evas_Object *obj,
void *event_info EINA_UNUSED)
@ -520,6 +528,8 @@ enventor_setup(app_data *ad)
enventor_live_view_updated_cb, ad);
evas_object_smart_callback_add(enventor, "program,run",
enventor_program_run_cb, ad);
evas_object_smart_callback_add(enventor, "ctxpopup,activated",
enventor_ctxpopup_activated_cb, ad);
evas_object_smart_callback_add(enventor, "ctxpopup,changed",
enventor_ctxpopup_changed_cb, ad);
evas_object_smart_callback_add(enventor, "ctxpopup,dismissed",

View File

@ -16,6 +16,14 @@
#define EOAPI EAPI
#endif
typedef enum
{
ENVENTOR_CTXPOPUP_TYPE_SLIDER = 0,
ENVENTOR_CTXPOPUP_TYPE_LIST,
ENVENTOR_CTXPOPUP_TYPE_TOGGLE,
ENVENTOR_CTXPOPUP_TYPE_IMAGE
} Enventor_Ctxpopup_Type;
typedef enum
{
ENVENTOR_PATH_TYPE_EDJ = 0,

View File

@ -532,7 +532,8 @@ ctxpopup_img_preview_create(edit_data *ed,
Evas_Object *
ctxpopup_candidate_list_create(edit_data *ed, attr_value *attr,
Evas_Smart_Cb ctxpopup_dismiss_cb,
Evas_Smart_Cb ctxpopup_changed_cb)
Evas_Smart_Cb ctxpopup_changed_cb,
Enventor_Ctxpopup_Type *type)
{
//create ctxpopup
Evas_Object *ctxpopup = elm_ctxpopup_add(edit_obj_get(ed));
@ -562,43 +563,51 @@ ctxpopup_candidate_list_create(edit_data *ed, attr_value *attr,
case ATTR_VALUE_BOOLEAN:
{
toggle_layout_set(ctxpopup, ctxdata);
*type = ENVENTOR_CTXPOPUP_TYPE_TOGGLE;
break;
}
case ATTR_VALUE_INTEGER:
{
ctxdata->integer = EINA_TRUE;
slider_layout_set(ctxpopup, ctxdata);
*type = ENVENTOR_CTXPOPUP_TYPE_SLIDER;
break;
}
case ATTR_VALUE_FLOAT:
{
ctxdata->integer = EINA_FALSE;
slider_layout_set(ctxpopup, ctxdata);
*type = ENVENTOR_CTXPOPUP_TYPE_SLIDER;
break;
}
case ATTR_VALUE_CONSTANT:
{
constant_candidate_set(ctxpopup, ctxdata);
*type = ENVENTOR_CTXPOPUP_TYPE_LIST;
break;
}
case ATTR_VALUE_PART:
{
if (!part_candidate_set(ctxpopup, ctxdata)) goto err;
*type = ENVENTOR_CTXPOPUP_TYPE_LIST;
break;
}
case ATTR_VALUE_STATE:
{
if (!state_candidate_set(ctxpopup, ctxdata, ed)) goto err;
*type = ENVENTOR_CTXPOPUP_TYPE_LIST;
break;
}
case ATTR_VALUE_IMAGE:
{
if (!image_candidate_set(ctxpopup, ctxdata)) goto err;
*type = ENVENTOR_CTXPOPUP_TYPE_IMAGE;
break;
}
case ATTR_VALUE_PROGRAM:
{
if (!program_candidate_set(ctxpopup, ctxdata)) goto err;
*type = ENVENTOR_CTXPOPUP_TYPE_LIST;
break;
}
}
@ -606,6 +615,7 @@ ctxpopup_candidate_list_create(edit_data *ed, attr_value *attr,
ctxdata);
evas_object_smart_callback_add(ctxpopup, "dismissed", ctxpopup_dismiss_cb,
ed);
return ctxpopup;
err:

View File

@ -673,6 +673,9 @@ image_preview_show(edit_data *ed, char *cur, Evas_Coord x, Evas_Coord y)
evas_object_move(ed->ctxpopup, x, y);
evas_object_show(ed->ctxpopup);
Enventor_Ctxpopup_Type type = ENVENTOR_CTXPOPUP_TYPE_IMAGE;
evas_object_smart_callback_call(ed->enventor, SIG_CTXPOPUP_ACTIVATED,
(void *) type);
elm_object_tree_focus_allow_set(ed->layout, EINA_FALSE);
succeed = EINA_TRUE;
}
@ -695,16 +698,21 @@ candidate_list_show(edit_data *ed, char *text, char *cur, char *selected)
parser_attribute_value_set(attr, cur);
//Show up the list of the types
Enventor_Ctxpopup_Type type;
Evas_Object *ctxpopup =
ctxpopup_candidate_list_create(ed, attr,
ctxpopup_candidate_dismiss_cb,
ctxpopup_candidate_changed_cb);
ctxpopup_candidate_changed_cb,
&type);
if (!ctxpopup) return;
int x, y;
evas_pointer_output_xy_get(evas_object_evas_get(ed->en_edit), &x, &y);
evas_object_move(ctxpopup, x, y);
evas_object_show(ctxpopup);
evas_object_smart_callback_call(ed->enventor, SIG_CTXPOPUP_ACTIVATED,
(void *) type);
evas_object_event_callback_add(ctxpopup, EVAS_CALLBACK_DEL, ctxpopup_del_cb, ed);
ed->ctxpopup = ctxpopup;
elm_object_tree_focus_allow_set(ed->layout, EINA_FALSE);

View File

@ -19,6 +19,7 @@ const char SIG_COMPILE_ERROR[] = "compile,error";
const char SIG_PROGRAM_RUN[] = "program,run";
const char SIG_CTXPOPUP_CHANGED[] = "ctxpopup,changed";
const char SIG_CTXPOPUP_DISMISSED[] = "ctxpopup,dismissed";
const char SIG_CTXPOPUP_ACTIVATED[] = "ctxpopup,activated";
const char SIG_EDC_MODIFIED[] = "edc,modified";
const char SIG_FOCUSED[] = "focused";

View File

@ -269,6 +269,7 @@ class Enventor.Object (Elm.Widget, Efl.File) {
max_line,changed;
compile,error;
program,run;
ctxpopup,activated;
ctxpopup,changed;
ctxpopup,dismissed;
edc,modified;

View File

@ -51,6 +51,7 @@ extern const char SIG_LIVE_VIEW_RESIZED[];
extern const char SIG_PROGRAM_RUN[];
extern const char SIG_CTXPOPUP_CHANGED[];
extern const char SIG_CTXPOPUP_DISMISSED[];
extern const char SIG_CTXPOPUP_ACTIVATED[];
extern const char SIG_EDC_MODIFIED[];
extern const char SIG_FOCUSED[];
@ -233,7 +234,7 @@ Eina_Bool template_insert(edit_data *ed, Enventor_Template_Insert_Type insert_ty
/* ctxpopup */
Evas_Object *ctxpopup_candidate_list_create(edit_data *ed, attr_value *attr, Evas_Smart_Cb ctxpopup_dismiss_cb, Evas_Smart_Cb ctxpopup_changed_cb);
Evas_Object *ctxpopup_candidate_list_create(edit_data *ed, attr_value *attr, Evas_Smart_Cb ctxpopup_dismiss_cb, Evas_Smart_Cb ctxpopup_changed_cb, Enventor_Ctxpopup_Type *type);
Evas_Object *ctxpopup_img_preview_create(edit_data*ed, const char *imgpath, Evas_Smart_Cb ctxpopup_dismiss_cb, Evas_Smart_Cb ctxpopup_relay_cb);
void ctxpopup_img_preview_reload(Evas_Object *ctxpopup, const char *imgpath);

View File

@ -46,6 +46,7 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = {
{SIG_PROGRAM_RUN, ""},
{SIG_CTXPOPUP_CHANGED, ""},
{SIG_CTXPOPUP_DISMISSED, ""},
{SIG_CTXPOPUP_ACTIVATED, ""},
{SIG_EDC_MODIFIED, ""},
{SIG_FOCUSED, ""},
{NULL, NULL}