examples: First pass add of examples info.
Infrastructure not in place yet, so example cannot be selected
This commit is contained in:
parent
acf483f168
commit
68475cb28f
|
@ -0,0 +1,23 @@
|
||||||
|
data {
|
||||||
|
item: "hellogui.title" "C EFL Beta Hello World";
|
||||||
|
item: "hellogui.directory" "tutorials/c/hellogui/";
|
||||||
|
item: "hellogui.description"
|
||||||
|
"Hello World using the EFL Beta APIs";
|
||||||
|
}
|
||||||
|
|
||||||
|
collections {
|
||||||
|
group {
|
||||||
|
name: "hellogui";
|
||||||
|
max: 128 128;
|
||||||
|
|
||||||
|
parts {
|
||||||
|
part { name: "icon";
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
max: 128 128;
|
||||||
|
images.image: "hellogui.png" COMP;
|
||||||
|
image.normal: "hellogui.png";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 2.6 KiB |
|
@ -0,0 +1,20 @@
|
||||||
|
tar = find_program('tar')
|
||||||
|
edje_cc = find_program('edje_cc')
|
||||||
|
|
||||||
|
cmd = [ edje_cc,
|
||||||
|
'-id', join_paths(meson.source_root(), 'data' , 'extra', 'examples', 'images'),
|
||||||
|
'@INPUT@', '@OUTPUT@'
|
||||||
|
]
|
||||||
|
|
||||||
|
examples_dir = join_paths(get_option('datadir'), 'edi', 'examples')
|
||||||
|
custom_target('examples_meta',
|
||||||
|
input : 'examples.edc',
|
||||||
|
output : 'examples.edj',
|
||||||
|
command : cmd,
|
||||||
|
install_dir: examples_dir,
|
||||||
|
install: true,
|
||||||
|
)
|
||||||
|
|
||||||
|
out = join_paths(get_option('prefix'), examples_dir, 'examples.edj')
|
||||||
|
meson.add_install_script('../../../scripts/world_read.sh', out)
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
subdir('desktop')
|
subdir('desktop')
|
||||||
subdir('images')
|
subdir('images')
|
||||||
subdir('extra/templates')
|
subdir('extra/templates')
|
||||||
|
subdir('extra/examples')
|
||||||
subdir('themes')
|
subdir('themes')
|
||||||
|
|
|
@ -22,6 +22,15 @@ typedef struct _Edi_Template
|
||||||
char *desc;
|
char *desc;
|
||||||
} Edi_Template;
|
} Edi_Template;
|
||||||
|
|
||||||
|
typedef struct _Edi_Example
|
||||||
|
{
|
||||||
|
char *edje_id;
|
||||||
|
char *edje_path;
|
||||||
|
char *example_path;
|
||||||
|
char *title;
|
||||||
|
char *desc;
|
||||||
|
} Edi_Example;
|
||||||
|
|
||||||
typedef struct _Edi_Welcome_Data {
|
typedef struct _Edi_Welcome_Data {
|
||||||
Evas_Object *pb;
|
Evas_Object *pb;
|
||||||
Evas_Object *button;
|
Evas_Object *button;
|
||||||
|
@ -31,6 +40,7 @@ typedef struct _Edi_Welcome_Data {
|
||||||
} Edi_Welcome_Data;
|
} Edi_Welcome_Data;
|
||||||
|
|
||||||
static Eina_List *_available_templates = NULL;
|
static Eina_List *_available_templates = NULL;
|
||||||
|
static Eina_List *_available_examples = NULL;
|
||||||
|
|
||||||
static Evas_Object *_welcome_window, *_welcome_naviframe;
|
static Evas_Object *_welcome_window, *_welcome_naviframe;
|
||||||
static Evas_Object *_edi_new_popup;
|
static Evas_Object *_edi_new_popup;
|
||||||
|
@ -214,37 +224,6 @@ _edi_welcome_project_new_input_row_add(const char *text, const char *placeholder
|
||||||
_create_inputs[row] = input;
|
_create_inputs[row] = input;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
_edi_template_free(Edi_Template *t)
|
|
||||||
{
|
|
||||||
if (t)
|
|
||||||
{
|
|
||||||
free(t->title);
|
|
||||||
free(t->desc);
|
|
||||||
free(t->edje_path);
|
|
||||||
free(t->skeleton_path);
|
|
||||||
free(t);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_edi_welcome_project_new_create_done_cb(const char *path, Eina_Bool success)
|
|
||||||
{
|
|
||||||
Edi_Template *template;
|
|
||||||
|
|
||||||
if (!success)
|
|
||||||
{
|
|
||||||
ERR("Unable to create project at path %s", path);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
EINA_LIST_FREE(_available_templates, template)
|
|
||||||
_edi_template_free(template);
|
|
||||||
|
|
||||||
_edi_welcome_project_open(path, EINA_TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
Edi_Template *
|
Edi_Template *
|
||||||
_edi_template_add(const char *directory, const char *file)
|
_edi_template_add(const char *directory, const char *file)
|
||||||
{
|
{
|
||||||
|
@ -263,6 +242,19 @@ _edi_template_add(const char *directory, const char *file)
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_edi_template_free(Edi_Template *t)
|
||||||
|
{
|
||||||
|
if (!t)
|
||||||
|
return;
|
||||||
|
|
||||||
|
free(t->title);
|
||||||
|
free(t->desc);
|
||||||
|
free(t->edje_path);
|
||||||
|
free(t->skeleton_path);
|
||||||
|
free(t);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_edi_templates_discover(const char *directory)
|
_edi_templates_discover(const char *directory)
|
||||||
{
|
{
|
||||||
|
@ -286,6 +278,82 @@ _edi_templates_discover(const char *directory)
|
||||||
eina_list_free(files);
|
eina_list_free(files);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Edi_Example *
|
||||||
|
_edi_example_add(const char *examples, const char *group)
|
||||||
|
{
|
||||||
|
Edi_Example *e;
|
||||||
|
|
||||||
|
e = malloc(sizeof(Edi_Example));
|
||||||
|
|
||||||
|
printf("EXITS %s, %s\n", edje_file_data_get(examples, "title"),
|
||||||
|
edje_file_data_get(examples, eina_slstr_printf("%s.title", group)));
|
||||||
|
e->title = edje_file_data_get(examples, eina_slstr_printf("%s.title", group));
|
||||||
|
e->desc = edje_file_data_get(examples, eina_slstr_printf("%s.description", group));
|
||||||
|
e->example_path = edje_file_data_get(examples, eina_slstr_printf("%s.directory", group));
|
||||||
|
e->edje_path = strdup(examples);
|
||||||
|
e->edje_id = strdup(group);
|
||||||
|
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_edi_example_free(Edi_Example *e)
|
||||||
|
{
|
||||||
|
if (!e)
|
||||||
|
return;
|
||||||
|
|
||||||
|
free(e->title);
|
||||||
|
free(e->desc);
|
||||||
|
free(e->edje_path);
|
||||||
|
free(e->edje_id);
|
||||||
|
free(e->example_path);
|
||||||
|
free(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_edi_examples_discover(const char *directory)
|
||||||
|
{
|
||||||
|
Eina_List *collection, *list;
|
||||||
|
char path[PATH_MAX];
|
||||||
|
const char *groupname;
|
||||||
|
|
||||||
|
eina_file_path_join(path, sizeof(path), directory, "examples.edj");
|
||||||
|
if (!ecore_file_exists(path))
|
||||||
|
return;
|
||||||
|
|
||||||
|
collection = edje_file_collection_list(path);
|
||||||
|
EINA_LIST_FOREACH(collection, list, groupname)
|
||||||
|
{
|
||||||
|
printf("Found group %s\n", groupname);
|
||||||
|
Edi_Example *example = _edi_example_add(path, groupname);
|
||||||
|
if (example)
|
||||||
|
_available_examples = eina_list_append(_available_examples, example);
|
||||||
|
}
|
||||||
|
|
||||||
|
edje_mmap_collection_list_free(collection);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_edi_welcome_project_new_create_done_cb(const char *path, Eina_Bool success)
|
||||||
|
{
|
||||||
|
Edi_Template *template;
|
||||||
|
Edi_Example *example;
|
||||||
|
|
||||||
|
if (!success)
|
||||||
|
{
|
||||||
|
ERR("Unable to create project at path %s", path);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
EINA_LIST_FREE(_available_templates, template)
|
||||||
|
_edi_template_free(template);
|
||||||
|
EINA_LIST_FREE(_available_examples, example)
|
||||||
|
_edi_example_free(example);
|
||||||
|
|
||||||
|
_edi_welcome_project_open(path, EINA_TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_edi_welcome_project_new_create_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
_edi_welcome_project_new_create_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
|
@ -449,6 +517,66 @@ _content_get(void *data, Evas_Object *obj, const char *source)
|
||||||
return frame;
|
return frame;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
_header_text_get(void *data, Evas_Object *obj EINA_UNUSED, const char *source EINA_UNUSED)
|
||||||
|
{
|
||||||
|
return strdup((char *)data);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_header_del(void *data, Evas_Object *obj EINA_UNUSED)
|
||||||
|
{
|
||||||
|
free(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
static Evas_Object *
|
||||||
|
_example_content_get(void *data, Evas_Object *obj, const char *source)
|
||||||
|
{
|
||||||
|
Evas_Object *frame, *table, *image, *entry;
|
||||||
|
Edi_Example *example = (Edi_Example *) data;
|
||||||
|
Eina_Slstr *content;
|
||||||
|
|
||||||
|
if (strcmp(source, "elm.swallow.content"))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
frame = elm_frame_add(obj);
|
||||||
|
elm_object_style_set(frame, "pad_medium");
|
||||||
|
evas_object_size_hint_weight_set(frame, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(frame, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
evas_object_show(frame);
|
||||||
|
|
||||||
|
table = elm_table_add(obj);
|
||||||
|
evas_object_size_hint_weight_set(table, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(table, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
elm_table_padding_set(table, 5, 5);
|
||||||
|
elm_table_homogeneous_set(table, EINA_TRUE);
|
||||||
|
evas_object_show(table);
|
||||||
|
elm_object_content_set(frame, table);
|
||||||
|
|
||||||
|
image = elm_image_add(table);
|
||||||
|
evas_object_size_hint_weight_set(image, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(image, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
evas_object_size_hint_min_set(image, 96 * elm_config_scale_get(), 96 * elm_config_scale_get());
|
||||||
|
elm_image_file_set(image, example->edje_path, example->edje_id);
|
||||||
|
evas_object_show(image);
|
||||||
|
elm_table_pack(table, image, 0, 0, 1, 1);
|
||||||
|
|
||||||
|
entry = elm_entry_add(table);
|
||||||
|
evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
elm_entry_editable_set(entry, EINA_FALSE);
|
||||||
|
elm_entry_scrollable_set(entry, EINA_FALSE);
|
||||||
|
elm_entry_single_line_set(entry, EINA_FALSE);
|
||||||
|
elm_entry_line_wrap_set(entry, ELM_WRAP_WORD);
|
||||||
|
elm_table_pack(table, entry, 1, 0, 3, 1);
|
||||||
|
evas_object_show(entry);
|
||||||
|
|
||||||
|
content = eina_slstr_printf("<b>%s</b><br><br>%s", example->title, example->desc);
|
||||||
|
elm_object_text_set(entry, content);
|
||||||
|
|
||||||
|
return frame;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_edi_welcome_project_new_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
_edi_welcome_project_new_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
|
@ -457,7 +585,8 @@ _edi_welcome_project_new_cb(void *data, Evas_Object *obj EINA_UNUSED, void *even
|
||||||
Evas_Object *table, *list, *rect, *hbox;
|
Evas_Object *table, *list, *rect, *hbox;
|
||||||
Elm_Object_Item *item;
|
Elm_Object_Item *item;
|
||||||
Edi_Template *template;
|
Edi_Template *template;
|
||||||
Elm_Genlist_Item_Class *itc;
|
Edi_Example *example;
|
||||||
|
Elm_Genlist_Item_Class *ith, *itc, *itc2;
|
||||||
char path[PATH_MAX];
|
char path[PATH_MAX];
|
||||||
|
|
||||||
naviframe = (Evas_Object *) data;
|
naviframe = (Evas_Object *) data;
|
||||||
|
@ -466,10 +595,13 @@ _edi_welcome_project_new_cb(void *data, Evas_Object *obj EINA_UNUSED, void *even
|
||||||
_edi_template_free(template);
|
_edi_template_free(template);
|
||||||
|
|
||||||
snprintf(path, sizeof(path), "%s/templates", _edi_config_dir_get());
|
snprintf(path, sizeof(path), "%s/templates", _edi_config_dir_get());
|
||||||
|
|
||||||
_edi_templates_discover(PACKAGE_DATA_DIR "/templates");
|
_edi_templates_discover(PACKAGE_DATA_DIR "/templates");
|
||||||
_edi_templates_discover(path);
|
_edi_templates_discover(path);
|
||||||
|
|
||||||
|
snprintf(path, sizeof(path), "%s/examples", _edi_config_dir_get());
|
||||||
|
_edi_examples_discover(PACKAGE_DATA_DIR "/examples");
|
||||||
|
_edi_examples_discover(path);
|
||||||
|
|
||||||
content = elm_box_add(naviframe);
|
content = elm_box_add(naviframe);
|
||||||
evas_object_size_hint_weight_set(content, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
evas_object_size_hint_weight_set(content, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
evas_object_size_hint_align_set(content, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
evas_object_size_hint_align_set(content, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
@ -503,6 +635,12 @@ _edi_welcome_project_new_cb(void *data, Evas_Object *obj EINA_UNUSED, void *even
|
||||||
elm_table_pack(table, list, 0, 0, 1, 1);
|
elm_table_pack(table, list, 0, 0, 1, 1);
|
||||||
elm_box_pack_end(hbox, table);
|
elm_box_pack_end(hbox, table);
|
||||||
|
|
||||||
|
ith = elm_genlist_item_class_new();
|
||||||
|
ith->item_style = "group_index";
|
||||||
|
ith->func.text_get = _header_text_get;
|
||||||
|
ith->func.del = _header_del;
|
||||||
|
elm_genlist_item_append(list, ith, _("Templates"), NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
|
||||||
|
|
||||||
itc = elm_genlist_item_class_new();
|
itc = elm_genlist_item_class_new();
|
||||||
itc->item_style = "full";
|
itc->item_style = "full";
|
||||||
itc->func.text_get = NULL;
|
itc->func.text_get = NULL;
|
||||||
|
@ -513,6 +651,22 @@ _edi_welcome_project_new_cb(void *data, Evas_Object *obj EINA_UNUSED, void *even
|
||||||
EINA_LIST_FOREACH(_available_templates, l, template)
|
EINA_LIST_FOREACH(_available_templates, l, template)
|
||||||
elm_genlist_item_append(list, itc, template, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
|
elm_genlist_item_append(list, itc, template, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
|
||||||
|
|
||||||
|
elm_genlist_item_append(list, ith, _("Examples"), NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
|
||||||
|
|
||||||
|
itc2 = elm_genlist_item_class_new();
|
||||||
|
itc2->item_style = "full";
|
||||||
|
itc2->func.text_get = NULL;
|
||||||
|
itc2->func.content_get = _example_content_get;
|
||||||
|
itc2->func.state_get = NULL;
|
||||||
|
itc2->func.del = NULL;
|
||||||
|
EINA_LIST_FOREACH(_available_examples, l, example)
|
||||||
|
{
|
||||||
|
Elm_Widget_Item *item;
|
||||||
|
|
||||||
|
item = elm_genlist_item_append(list, itc2, example, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
|
||||||
|
elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_NONE);
|
||||||
|
}
|
||||||
|
|
||||||
elm_genlist_realized_items_update(list);
|
elm_genlist_realized_items_update(list);
|
||||||
|
|
||||||
elm_genlist_item_class_free(itc);
|
elm_genlist_item_class_free(itc);
|
||||||
|
|
Loading…
Reference in New Issue