From f155a58983587296b3662884f92e020061306182 Mon Sep 17 00:00:00 2001 From: Al Poole Date: Fri, 13 Oct 2017 22:03:20 +0100 Subject: [PATCH] welcome: Improve project creation. Add support for additional meta data including images and title/descriptions. Also add a new frame to the project creation process with more descriptive choices of project type. Layouts can change later. --- data/extra/skeleton/Makefile.am | 11 +- data/extra/skeleton/eflproject.edc | 23 ++ data/extra/skeleton/eflproject_python.edc | 23 ++ data/extra/skeleton/images/c.png | Bin 0 -> 7097 bytes data/extra/skeleton/images/python.png | Bin 0 -> 8510 bytes data/extra/skeleton/meson.build | 23 +- src/bin/screens/edi_welcome.c | 376 ++++++++++++++-------- 7 files changed, 311 insertions(+), 145 deletions(-) create mode 100644 data/extra/skeleton/eflproject.edc create mode 100644 data/extra/skeleton/eflproject_python.edc create mode 100644 data/extra/skeleton/images/c.png create mode 100644 data/extra/skeleton/images/python.png diff --git a/data/extra/skeleton/Makefile.am b/data/extra/skeleton/Makefile.am index 46df77b..6787854 100644 --- a/data/extra/skeleton/Makefile.am +++ b/data/extra/skeleton/Makefile.am @@ -1,9 +1,12 @@ + MAINTAINERCLEANFILES = Makefile.in skeletondir = $(datadir)/$(PACKAGE)/skeleton skeleton_DATA = \ eflproject.tar.gz \ -eflproject_python.tar.gz +eflproject.edj \ +eflproject_python.tar.gz \ +eflproject_python.edj eflproject.tar.gz: tar zcvf eflproject.tar.gz -C $(srcdir) eflproject @@ -11,4 +14,10 @@ eflproject.tar.gz: eflproject_python.tar.gz: tar zcvf eflproject_python.tar.gz -C $(srcdir) eflproject_python +eflproject.edj: + edje_cc -id images/ eflproject.edc + +eflproject_python.edj: + edje_cc -id images/ eflproject_python.edc + EXTRA_DIST = $(skeleton_DATA) diff --git a/data/extra/skeleton/eflproject.edc b/data/extra/skeleton/eflproject.edc new file mode 100644 index 0000000..fa5056a --- /dev/null +++ b/data/extra/skeleton/eflproject.edc @@ -0,0 +1,23 @@ +data { + item: "title" "C EFL Project"; + item: "file" "eflproject.tar.gz"; + item: "description" + + "C EFL Project.

Begin your C programming EFL project. All content is freely modifiable and distributable and licensed in the public-domain.

Happy hacking!"; +} + +collections { + group { + name: "logo"; + max: 128 128; + parts { + part { name: "icon"; + description { state: "default" 0.0; + max: 128 128; + image.image: "c.png" COMP; + image.normal: "c.png"; + } + } + } + } +} diff --git a/data/extra/skeleton/eflproject_python.edc b/data/extra/skeleton/eflproject_python.edc new file mode 100644 index 0000000..87bd914 --- /dev/null +++ b/data/extra/skeleton/eflproject_python.edc @@ -0,0 +1,23 @@ +data { + item: "title" "Python EFL Project"; + item: "file" "eflproject_python.tar.gz"; + item: "description" + + "Python EFL Project.

Start your new EFL Python programming project. All code is in the public-domain, you are free to modify and distribute as you wish."; +} + +collections { + group { + name: "logo"; + max: 128 128; + parts { + part { name: "icon"; + description { state: "default" 0.0; + max: 128 128; + image.image: "python.png" COMP; + image.normal: "python.png"; + } + } + } + } +} diff --git a/data/extra/skeleton/images/c.png b/data/extra/skeleton/images/c.png new file mode 100644 index 0000000000000000000000000000000000000000..9d94aaacf7dd3d6fd28f758967d7906138a0a55d GIT binary patch literal 7097 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 D08ztw literal 0 HcmV?d00001 diff --git a/data/extra/skeleton/images/python.png b/data/extra/skeleton/images/python.png new file mode 100644 index 0000000000000000000000000000000000000000..0eabd23748177a4f5297f3c0a6452b99cec0bd6e GIT binary patch literal 8510 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 literal 0 HcmV?d00001 diff --git a/data/extra/skeleton/meson.build b/data/extra/skeleton/meson.build index fc134d5..7ae8183 100644 --- a/data/extra/skeleton/meson.build +++ b/data/extra/skeleton/meson.build @@ -1,11 +1,12 @@ tar = find_program('tar') +edje_cc = find_program('edje_cc') skeleton_names = ['eflproject', 'eflproject_python'] foreach skeleton_name : skeleton_names custom_target('skeleton ' + skeleton_name, - command : [tar, 'zcf', '@OUTPUT@', '@INPUT@'], + command : [tar, 'zcf', '@OUTPUT@', '-C', '../data/extra/skeleton', skeleton_name], input : skeleton_name, output : skeleton_name + '.tar.gz', install_dir: join_paths(get_option('prefix'), get_option('datadir'), 'edi', 'skeleton'), @@ -13,3 +14,23 @@ foreach skeleton_name : skeleton_names ) endforeach + +cmd = [ edje_cc, + '-id', join_paths(meson.source_root(), 'data' , 'extra', 'skeleton', 'images'), + '@INPUT@', '@OUTPUT@' + ] + +skeleton_meta = ['eflproject', 'eflproject_python'] + +foreach meta : skeleton_meta + custom_target('meta ' + meta, + input : meta + '.edc', + output : meta + '.edj', + command : cmd, + install_dir: join_paths(get_option('prefix'), get_option('datadir'), 'edi', 'skeleton'), + install: true, + ) + out = join_paths(get_option('prefix'), get_option('datadir'), 'edi', 'skeleton') + '/' + meta + '.edj' + meson.add_install_script('chmod', 'a+r', out) +endforeach + diff --git a/src/bin/screens/edi_welcome.c b/src/bin/screens/edi_welcome.c index d803592..5c26377 100644 --- a/src/bin/screens/edi_welcome.c +++ b/src/bin/screens/edi_welcome.c @@ -14,14 +14,23 @@ #define _EDI_WELCOME_PROJECT_NEW_TABLE_WIDTH 4 -typedef struct _Edi_Skeleton +typedef struct _Edi_Template { - const char *name; - const char *path; - // TODO: add more fields here (taken from skeleton metadata) -} Edi_Skeleton; + char *edje_path; + char *skeleton_path; + char *title; + char *desc; +} Edi_Template; -static Eina_List *_available_skeletons = NULL; +typedef struct _Edi_Welcome_Data { + Evas_Object *pb; + Evas_Object *button; + char *dir; + char *url; + int status; +} Edi_Welcome_Data; + +static Eina_List *_available_templates = NULL; static Evas_Object *_welcome_window, *_welcome_naviframe; static Evas_Object *_edi_new_popup; @@ -205,9 +214,24 @@ _edi_welcome_project_new_input_row_add(const char *text, const char *placeholder _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); @@ -215,138 +239,51 @@ _edi_welcome_project_new_create_done_cb(const char *path, Eina_Bool success) return; } + EINA_LIST_FREE(_available_templates, template) + _edi_template_free(template); + _edi_welcome_project_open(path, EINA_TRUE); } -static Edi_Skeleton * -_edi_skeleton_new(const char *zippath) +Edi_Template * +_edi_template_add(const char *directory, const char *file) { - Edi_Skeleton *skel; - char *name, *tarname; + Edi_Template *t; + char *path = edi_path_append(directory, file); - skel = malloc(sizeof(Edi_Skeleton)); - if (!skel) + if (!ecore_file_exists(path)) return NULL; - skel->path = eina_stringshare_add(zippath); + t = malloc(sizeof(Edi_Template)); + t->title = edje_file_data_get(path, "title"); + t->desc = edje_file_data_get(path, "description"); + t->skeleton_path = edi_path_append(directory, edje_file_data_get(path, "file")); + t->edje_path = path; - tarname = ecore_file_strip_ext(ecore_file_file_get(zippath)); - name = ecore_file_strip_ext(tarname); - skel->name = eina_stringshare_add(name); - free(tarname); - free(name); - - // TODO: here we can search for an (optional) metadata file for the skeleton - // and present more info to the user - - return skel; + return t; } static void -_edi_skeleton_free(Edi_Skeleton *skel) +_edi_templates_discover(const char *directory) { - if (skel) - { - eina_stringshare_del(skel->name); - eina_stringshare_del(skel->path); - free(skel); - } -} + Eina_List *files; + char *file; -static void -_edi_skeletons_discover(const char *path) -{ - Eina_List *file_list, *l; - char fullp[PATH_MAX], *p; - - file_list = ecore_file_ls(path); - EINA_LIST_FOREACH(file_list, l, p) + files = ecore_file_ls(directory); + EINA_LIST_FREE(files, file) { - if (eina_str_has_extension(p, ".tar.gz")) + if (eina_str_has_extension(file, ".edj")) { - Edi_Skeleton *skel; - - snprintf(fullp, sizeof(fullp), "%s/%s", path, p); - skel = _edi_skeleton_new(fullp); - if (skel) - _available_skeletons = eina_list_append(_available_skeletons, skel); + Edi_Template *template = _edi_template_add(directory, file); + if (template) + _available_templates = eina_list_append(_available_templates, template); } - free(p); - } - eina_list_free(file_list); -} -static char * -_edi_skeleton_text_get_cb(void *data, Evas_Object *obj EINA_UNUSED, - const char *part EINA_UNUSED) -{ - Edi_Skeleton *skel = data; - - if (skel && skel->name && skel->name[0]) - return strdup(skel->name); - else - return NULL; -} - -static void -_edi_skeleton_pressed_cb(void *data EINA_UNUSED, Evas_Object *obj, - void *event_info) -{ - Edi_Skeleton *skel = elm_object_item_data_get(event_info); - - elm_object_text_set(obj, skel->name); - elm_combobox_hover_end(obj); -} - -static void -_edi_welcome_project_new_skeleton_combobox_add(const char *text, int row, Evas_Object *parent) -{ - Evas_Object *label, *cmbbox; - Elm_Genlist_Item_Class *itc; - Elm_Object_Item *item; - static char user_skeleton_dir[PATH_MAX]; - Edi_Skeleton *skel; - Eina_List *l; - - label = elm_label_add(parent); - elm_object_text_set(label, text); - evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_table_pack(parent, label, 0, row, 1, 1); - evas_object_show(label); - - cmbbox = elm_combobox_add(parent); - evas_object_size_hint_weight_set(cmbbox, EVAS_HINT_EXPAND, 0); - evas_object_size_hint_align_set(cmbbox, EVAS_HINT_FILL, 0); - elm_object_part_text_set(cmbbox, "guide", _("Select the project type")); - elm_object_text_set(cmbbox, "eflproject"); - elm_table_pack(parent, cmbbox, 1, row, _EDI_WELCOME_PROJECT_NEW_TABLE_WIDTH - 1, 1); - evas_object_smart_callback_add(cmbbox, "item,pressed", - _edi_skeleton_pressed_cb, NULL); - evas_object_show(cmbbox); - _create_inputs[row] = cmbbox; - - EINA_LIST_FREE(_available_skeletons, skel) - _edi_skeleton_free(skel); - - snprintf(user_skeleton_dir, sizeof(user_skeleton_dir), - "%s/skeleton", _edi_config_dir_get()); - _edi_skeletons_discover(PACKAGE_DATA_DIR "/skeleton"); - _edi_skeletons_discover(user_skeleton_dir); - - itc = elm_genlist_item_class_new(); - itc->item_style = "default"; - itc->func.text_get = _edi_skeleton_text_get_cb; - - EINA_LIST_FOREACH(_available_skeletons, l, skel) - { - item = elm_genlist_item_append(cmbbox, itc, skel, NULL, - ELM_GENLIST_ITEM_NONE, NULL, NULL); - if (!strcmp(skel->name, "eflproject")) - elm_genlist_item_selected_set(item, EINA_TRUE); + free(file); } - elm_genlist_item_class_free(itc); + if (files) + eina_list_free(files); } static void @@ -354,22 +291,20 @@ _edi_welcome_project_new_create_cb(void *data EINA_UNUSED, Evas_Object *obj EINA { Evas_Object *entry; const char *path, *name, *user, *email, *url; - Edi_Skeleton *skeleton; - Elm_Object_Item *item; + Edi_Template *template = (Edi_Template *) data; - item = elm_genlist_selected_item_get(_create_inputs[0]); - skeleton = elm_object_item_data_get(item); - entry = elm_layout_content_get(_create_inputs[1], "elm.swallow.entry"); + entry = elm_layout_content_get(_create_inputs[0], "elm.swallow.entry"); path = elm_object_text_get(entry); - name = elm_object_text_get(_create_inputs[2]); - url = elm_object_text_get(_create_inputs[3]); - user = elm_object_text_get(_create_inputs[4]); - email = elm_object_text_get(_create_inputs[5]); + name = elm_object_text_get(_create_inputs[1]); + url = elm_object_text_get(_create_inputs[2]); + user = elm_object_text_get(_create_inputs[3]); + email = elm_object_text_get(_create_inputs[4]); - if (skeleton && path && path[0] && name && name[0]) - edi_create_efl_project(skeleton->path, path, name, url, user, email, - _edi_welcome_project_new_create_done_cb); - // TODO show something to the user in case of missing fields + if (template && path && path[0] && name && name[0]) + { + edi_create_efl_project(template->skeleton_path, path, name, url, user, email, + _edi_welcome_project_new_create_done_cb); + } } static int @@ -409,9 +344,9 @@ _edi_welcome_user_fullname_get(const char *username, char *fullname, size_t max) } static void -_edi_welcome_project_new_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +_edi_welcome_project_details(Evas_Object *naviframe, Edi_Template *template) { - Evas_Object *content, *button, *naviframe = data; + Evas_Object *content, *button; Elm_Object_Item *item; int row = 0; char fullname[1024]; @@ -425,7 +360,6 @@ _edi_welcome_project_new_cb(void *data, Evas_Object *obj EINA_UNUSED, void *even username = getenv("USER"); if (!username) username = getenv("USERNAME"); - _edi_welcome_project_new_skeleton_combobox_add(_("Project Type"), row++, content); _edi_welcome_project_new_directory_row_add(_("Parent Path"), row++, content); _edi_welcome_project_new_input_row_add(_("Project Name"), NULL, row++, content); _edi_welcome_project_new_input_row_add(_("Project URL"), NULL, row++, content); @@ -441,20 +375,176 @@ _edi_welcome_project_new_cb(void *data, Evas_Object *obj EINA_UNUSED, void *even evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_show(button); elm_table_pack(content, button, _EDI_WELCOME_PROJECT_NEW_TABLE_WIDTH - 2, row, 2, 1); - evas_object_smart_callback_add(button, "clicked", _edi_welcome_project_new_create_cb, NULL); + evas_object_smart_callback_add(button, "clicked", _edi_welcome_project_new_create_cb, template); item = elm_naviframe_item_push(naviframe, _("Create New Project"), NULL, NULL, content, NULL); elm_naviframe_item_title_enabled_set(item, EINA_TRUE, EINA_TRUE); } -typedef struct _Edi_Welcome_Data { - Evas_Object *pb; - Evas_Object *button; - char *dir; - char *url; - int status; -} Edi_Welcome_Data; +static void +_edi_welcome_button_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Elm_Object_Item *item; + Edi_Template *template; + Evas_Object *naviframe, *list = evas_object_data_get(obj, "selected"); + + naviframe = (Evas_Object *) data; + + item = elm_genlist_selected_item_get(list); + if (!item) return; + + template = elm_object_item_data_get(item); + + _edi_welcome_project_details(naviframe, template); +} + +static Evas_Object * +_content_get(void *data, Evas_Object *obj, const char *source) +{ + Evas_Object *table, *box, *frame, *image, *label, *entry, *rect; + Edi_Template *template = (Edi_Template *) data; + + if (strcmp(source, "elm.swallow.content")) + return NULL; + + frame = elm_frame_add(obj); + 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); + evas_object_show(table); + + label = elm_label_add(table); + elm_object_text_set(label, template->title); + evas_object_show(label); + elm_table_pack(table, label, 0, 0, 1, 1); + + 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); + elm_image_file_set(image, template->edje_path, "logo"); + evas_object_show(image); + elm_table_pack(table, image, 0, 1, 1, 1); + rect = evas_object_rectangle_add(table); + evas_object_size_hint_weight_set(rect, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(rect, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_min_set(rect, 128 * elm_config_scale_get(), 128 * elm_config_scale_get()); + elm_table_pack(table, rect, 0, 1, 1, 1); + + box = elm_box_add(obj); + evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(box); + rect = evas_object_rectangle_add(table); + evas_object_size_hint_weight_set(rect, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(rect, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_min_set(rect, 300 * elm_config_scale_get(), 128 * elm_config_scale_get()); + elm_table_pack(table, rect, 1, 1, 1, 1); + + entry = elm_entry_add(box); + 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_TRUE); + elm_entry_single_line_set(entry, EINA_FALSE); + elm_entry_line_wrap_set(entry, ELM_WRAP_WORD); + elm_object_text_set(entry, template->desc); + elm_box_pack_end(box, entry); + evas_object_show(entry); + + elm_table_pack(table, box, 1, 1, 1, 1); + elm_object_content_set(frame, table); + + return frame; +} + +static void +_edi_welcome_project_new_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Eina_List *l; + Evas_Object *content, *button, *naviframe; + Evas_Object *table, *list, *rect, *hbox; + Elm_Object_Item *item; + Edi_Template *template; + Elm_Genlist_Item_Class *itc; + char path[PATH_MAX]; + + naviframe = (Evas_Object *) data; + + EINA_LIST_FREE(_available_templates, template) + _edi_template_free(template); + + snprintf(path, sizeof(path), "%s/skeleton", _edi_config_dir_get()); + + _edi_templates_discover(PACKAGE_DATA_DIR "/skeleton"); + _edi_templates_discover(path); + + content = elm_box_add(naviframe); + 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_show(content); + + hbox = elm_box_add(content); + evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_box_horizontal_set(hbox, EINA_TRUE); + evas_object_show(hbox); + + table = elm_table_add(content); + 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); + evas_object_show(table); + rect = evas_object_rectangle_add(table); + evas_object_size_hint_weight_set(rect, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(rect, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_min_set(rect, 500 * elm_config_scale_get(), 300 * elm_config_scale_get()); + elm_table_pack(table, rect, 0, 0, 1, 1); + + list = elm_genlist_add(content); + evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_genlist_mode_set(list, ELM_LIST_SCROLL); + elm_scroller_bounce_set(list, EINA_TRUE, EINA_TRUE); + elm_scroller_policy_set(list, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_ON); + evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(list); + elm_table_pack(table, list, 0, 0, 1, 1); + elm_box_pack_end(hbox, table); + + itc = elm_genlist_item_class_new(); + itc->item_style = "full"; + itc->func.text_get = NULL; + itc->func.content_get = _content_get; + itc->func.state_get = NULL; + itc->func.del = NULL; + + EINA_LIST_FOREACH(_available_templates, l, template) + elm_genlist_item_append(list, itc, template, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); + + elm_genlist_realized_items_update(list); + + elm_genlist_item_class_free(itc); + + button = elm_button_add(content); + elm_object_text_set(button, _("Choose")); + evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_data_set(button, "selected", list); + evas_object_smart_callback_add(button, "clicked", _edi_welcome_button_clicked_cb, naviframe); + evas_object_show(button); + elm_box_pack_end(content, hbox); + elm_box_pack_end(content, button); + + item = elm_naviframe_item_push(naviframe, _("Select Project Type"), + NULL, NULL, content, NULL); + + elm_naviframe_item_title_enabled_set(item, EINA_TRUE, EINA_TRUE); +} static void _edi_welcome_clone_thread_end_cb(void *data, Ecore_Thread *thread EINA_UNUSED)