forked from enlightenment/edi
Add basic creation of new projects using the skeleton tool
This commit is contained in:
parent
451137c70f
commit
d40c220e68
|
@ -1,3 +0,0 @@
|
||||||
[submodule "data/extra/skeleton"]
|
|
||||||
path = data/extra/skeleton
|
|
||||||
url = git://git.enlightenment.org/tools/skeleton.git
|
|
|
@ -1,12 +1,10 @@
|
||||||
MAINTAINERCLEANFILES = Makefile.in
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
|
||||||
skeletondir = $(datadir)/$(PACKAGE)/
|
skeletondir = $(datadir)/$(PACKAGE)/
|
||||||
skeleton_DATA = skeleton/README
|
skeleton_DATA =
|
||||||
|
|
||||||
install-data-hook:
|
install-data-hook:
|
||||||
## removing the temporary README that is used for a git submodule check
|
tar -xf skeleton.tar.gz -C $(skeletondir)
|
||||||
rm -f $(skeletondir)/README
|
|
||||||
cp -rv skeleton $(skeletondir)
|
|
||||||
|
|
||||||
uninstall-local:
|
uninstall-local:
|
||||||
rm -rf $(skeletondir)/skeleton
|
rm -rf $(skeletondir)/skeleton
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 24f27aa356566b55ffd69ff8592ed3070a50b14e
|
|
Binary file not shown.
|
@ -7,8 +7,21 @@
|
||||||
#include "edi_welcome.h"
|
#include "edi_welcome.h"
|
||||||
#include "edi_private.h"
|
#include "edi_private.h"
|
||||||
|
|
||||||
static Evas_Object *_welcome_window;
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#define _EDI_WELCOME_PROJECT_NEW_TABLE_WIDTH 4
|
||||||
|
|
||||||
|
static Evas_Object *_welcome_window;
|
||||||
|
static Evas_Object *_create_inputs[5];
|
||||||
|
|
||||||
|
static void
|
||||||
|
_edi_welcome_project_open(const char *path)
|
||||||
|
{
|
||||||
|
evas_object_del(_welcome_window);
|
||||||
|
|
||||||
|
edi_project_set(path);
|
||||||
|
edi_open(edi_project_get());
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_edi_welcome_project_chosen_cb(void *data,
|
_edi_welcome_project_chosen_cb(void *data,
|
||||||
|
@ -19,10 +32,7 @@ _edi_welcome_project_chosen_cb(void *data,
|
||||||
|
|
||||||
if (event_info)
|
if (event_info)
|
||||||
{
|
{
|
||||||
evas_object_del(_welcome_window);
|
_edi_welcome_project_open((const char*)event_info);
|
||||||
|
|
||||||
edi_project_set(event_info);
|
|
||||||
edi_open(edi_project_get());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,6 +72,126 @@ _edi_welcome_project_choose_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNU
|
||||||
evas_object_show(win);
|
evas_object_show(win);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_edi_welcome_project_new_directory_row_add(const char *text, const char *placeholder, int row,
|
||||||
|
Evas_Object *parent)
|
||||||
|
{
|
||||||
|
Evas_Object *label, *input;
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
input = elm_fileselector_entry_add(parent);
|
||||||
|
elm_object_text_set(input, "Select folder");
|
||||||
|
elm_fileselector_folder_only_set(input, EINA_TRUE);
|
||||||
|
evas_object_size_hint_weight_set(input, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(input, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
elm_table_pack(parent, input, 1, row, _EDI_WELCOME_PROJECT_NEW_TABLE_WIDTH - 1, 1);
|
||||||
|
evas_object_show(input);
|
||||||
|
|
||||||
|
if (placeholder)
|
||||||
|
{
|
||||||
|
elm_object_text_set(input, placeholder);
|
||||||
|
}
|
||||||
|
_create_inputs[row] = input;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_edi_welcome_project_new_input_row_add(const char *text, const char *placeholder, int row,
|
||||||
|
Evas_Object *parent)
|
||||||
|
{
|
||||||
|
Evas_Object *label, *input;
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
input = elm_entry_add(parent);
|
||||||
|
elm_entry_scrollable_set(input, EINA_TRUE);
|
||||||
|
elm_entry_single_line_set(input, EINA_TRUE);
|
||||||
|
evas_object_size_hint_weight_set(input, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(input, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
elm_table_pack(parent, input, 1, row, _EDI_WELCOME_PROJECT_NEW_TABLE_WIDTH - 1, 1);
|
||||||
|
evas_object_show(input);
|
||||||
|
|
||||||
|
if (placeholder)
|
||||||
|
{
|
||||||
|
elm_object_text_set(input, placeholder);
|
||||||
|
}
|
||||||
|
_create_inputs[row] = input;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_edi_welcome_project_new_create_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
|
{
|
||||||
|
const char *path, *name, *user, *email, *url;
|
||||||
|
char script[PATH_MAX], fullpath[PATH_MAX];
|
||||||
|
|
||||||
|
path = elm_fileselector_path_get(_create_inputs[0]);
|
||||||
|
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]);
|
||||||
|
|
||||||
|
snprintf(script, sizeof(script), "%s/skeleton/eflprj", elm_app_data_dir_get());
|
||||||
|
snprintf(fullpath, sizeof(fullpath), "%s/%s", path, name);
|
||||||
|
int pid = fork();
|
||||||
|
|
||||||
|
if (pid == 0)
|
||||||
|
{
|
||||||
|
printf("Creating project \"%s\" at path %s for %s<%s>\n", name, fullpath, user, email);
|
||||||
|
|
||||||
|
execlp(script, script, fullpath, name, user, email, url, NULL);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
wait(pid);
|
||||||
|
_edi_welcome_project_open(fullpath);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_edi_welcome_project_new_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Evas_Object *content, *button, *naviframe = data;
|
||||||
|
Elm_Object_Item *item;
|
||||||
|
int row = 0;
|
||||||
|
|
||||||
|
content = elm_table_add(naviframe);
|
||||||
|
elm_table_homogeneous_set(content, EINA_TRUE);
|
||||||
|
evas_object_size_hint_weight_set(content, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_show(content);
|
||||||
|
|
||||||
|
_edi_welcome_project_new_directory_row_add("Parent Path", NULL, 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);
|
||||||
|
_edi_welcome_project_new_input_row_add("Username", getenv("USER"), row++, content);
|
||||||
|
_edi_welcome_project_new_input_row_add("Email", NULL, row++, content);
|
||||||
|
|
||||||
|
button = elm_button_add(content);
|
||||||
|
elm_object_text_set(button, "Create");
|
||||||
|
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_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);
|
||||||
|
|
||||||
|
item = elm_naviframe_item_push(naviframe,
|
||||||
|
"Create New Project",
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
content,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
elm_naviframe_item_title_enabled_set(item, EINA_TRUE, EINA_TRUE);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_edi_welcome_exit(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
_edi_welcome_exit(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
|
@ -71,7 +201,8 @@ _edi_welcome_exit(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EIN
|
||||||
|
|
||||||
Evas_Object *edi_welcome_show()
|
Evas_Object *edi_welcome_show()
|
||||||
{
|
{
|
||||||
Evas_Object *win, *hbx, *box, *button, *label, *image;
|
Evas_Object *win, *hbx, *box, *button, *label, *image, *naviframe;
|
||||||
|
Elm_Object_Item *item;
|
||||||
char buf[PATH_MAX];
|
char buf[PATH_MAX];
|
||||||
|
|
||||||
win = elm_win_util_standard_add("main", "Welcome to Edi");
|
win = elm_win_util_standard_add("main", "Welcome to Edi");
|
||||||
|
@ -81,10 +212,14 @@ Evas_Object *edi_welcome_show()
|
||||||
elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
|
elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
|
||||||
evas_object_smart_callback_add(win, "delete,request", _edi_welcome_exit, win);
|
evas_object_smart_callback_add(win, "delete,request", _edi_welcome_exit, win);
|
||||||
|
|
||||||
hbx = elm_box_add(win);
|
naviframe = elm_naviframe_add(win);
|
||||||
|
evas_object_size_hint_weight_set(naviframe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
elm_win_resize_object_add(win, naviframe);
|
||||||
|
evas_object_show(naviframe);
|
||||||
|
|
||||||
|
hbx = elm_box_add(naviframe);
|
||||||
elm_box_horizontal_set(hbx, EINA_TRUE);
|
elm_box_horizontal_set(hbx, EINA_TRUE);
|
||||||
evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
elm_win_resize_object_add(win, hbx);
|
|
||||||
evas_object_show(hbx);
|
evas_object_show(hbx);
|
||||||
|
|
||||||
/* Existing projects area */
|
/* Existing projects area */
|
||||||
|
@ -124,12 +259,22 @@ Evas_Object *edi_welcome_show()
|
||||||
evas_object_show(image);
|
evas_object_show(image);
|
||||||
button = elm_button_add(box);
|
button = elm_button_add(box);
|
||||||
elm_object_text_set(button, "Create New Project");
|
elm_object_text_set(button, "Create New Project");
|
||||||
elm_object_disabled_set(button, EINA_TRUE);
|
evas_object_smart_callback_add(button, "clicked",
|
||||||
|
_edi_welcome_project_new_cb, naviframe);
|
||||||
elm_box_pack_end(box, button);
|
elm_box_pack_end(box, button);
|
||||||
evas_object_show(button);
|
evas_object_show(button);
|
||||||
|
|
||||||
evas_object_resize(win, 320 * elm_config_scale_get(), 240 * elm_config_scale_get());
|
evas_object_resize(win, 320 * elm_config_scale_get(), 180 * elm_config_scale_get());
|
||||||
evas_object_show(win);
|
evas_object_show(win);
|
||||||
|
|
||||||
|
item = elm_naviframe_item_push(naviframe,
|
||||||
|
"Choose Project",
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
hbx,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
elm_naviframe_item_title_enabled_set(item, EINA_FALSE, EINA_FALSE);
|
||||||
|
|
||||||
return win;
|
return win;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue