diff --git a/src/bin/edi_scm_main.c b/src/bin/edi_scm_main.c index e1b77a9..60d16b7 100644 --- a/src/bin/edi_scm_main.c +++ b/src/bin/edi_scm_main.c @@ -1,8 +1,8 @@ #include #include "edi_scm_ui.h" -#define DEFAULT_WIDTH 460 -#define DEFAULT_HEIGHT 280 +#define DEFAULT_WIDTH 480 +#define DEFAULT_HEIGHT 360 static void _win_del_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) @@ -12,20 +12,17 @@ _win_del_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUS } static Evas_Object * -_setup_win(void) +window_setup(void) { Evas_Object *win, *icon; Eina_Strbuf *title; - char *cwd; - - cwd = getcwd(NULL, PATH_MAX); + char *path; title = eina_strbuf_new(); - eina_strbuf_append_printf(title, "Edi Source Control :: %s", cwd); elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); - win = elm_win_util_standard_add(eina_strbuf_string_get(title), eina_strbuf_string_get(title)); + win = elm_win_util_standard_add("edi_scm", "edi_scm"); icon = elm_icon_add(win); elm_icon_standard_set(icon, "edi"); elm_win_icon_object_set(win, icon); @@ -33,23 +30,33 @@ _setup_win(void) evas_object_resize(win, DEFAULT_WIDTH * elm_config_scale_get(), DEFAULT_HEIGHT * elm_config_scale_get()); evas_object_smart_callback_add(win, "delete,request", _win_del_cb, NULL); + path = edi_scm_ui_add(win); + if (!path) + { + fprintf(stderr, "ERR: unable to obtain path from SCM engine!\n"); + exit(EXIT_FAILURE); + } + + eina_strbuf_append_printf(title, "Edi Source Control :: %s", path); + + elm_win_title_set(win, eina_strbuf_string_get(title)); + + elm_win_center(win, EINA_TRUE, EINA_TRUE); + + evas_object_show(win); + eina_strbuf_free(title); - free(cwd); + free(path); return win; } int main(int argc, char **argv) { - Evas_Object *win; - ecore_init(); elm_init(argc, argv); - win = _setup_win(); - edi_scm_ui_add(win); - elm_win_center(win, EINA_TRUE, EINA_TRUE); - evas_object_show(win); + window_setup(); ecore_main_loop_begin(); diff --git a/src/bin/edi_scm_ui.c b/src/bin/edi_scm_ui.c index cb75d52..af423a9 100644 --- a/src/bin/edi_scm_ui.c +++ b/src/bin/edi_scm_ui.c @@ -507,7 +507,32 @@ _edi_scm_ui_file_changes_cb(void *data EINA_UNUSED, int type EINA_UNUSED, return ECORE_CALLBACK_DONE; } -void +static char * +_edi_scm_find_directory(Edi_Scm_Engine *engine) +{ + char *path; + char *directory = strdup(engine->workdir); + + while (1) + { + if (!strcmp(directory, "/") || !strcmp(directory, "/home")) + break; + + path = edi_path_append(directory, engine->directory); + if (ecore_file_exists(path)) + { + free(path); + return directory; + } + + free(path); + directory = ecore_file_dir_get(directory); + } + + return NULL; +} + +char * edi_scm_ui_add(Evas_Object *parent) { Evas_Object *box, *frame, *hbox, *cbox, *label, *avatar, *input, *button; @@ -747,5 +772,7 @@ edi_scm_ui_add(Evas_Object *parent) elm_box_pack_end(hbox, button); elm_box_pack_end(box, hbox); + + return _edi_scm_find_directory(engine); } diff --git a/src/bin/edi_scm_ui.h b/src/bin/edi_scm_ui.h index 41dc6dd..422a7f3 100644 --- a/src/bin/edi_scm_ui.h +++ b/src/bin/edi_scm_ui.h @@ -24,11 +24,14 @@ extern "C" { /** * Create the commit dialog UI. - * + * * @param parent Parent object to add the commit UI to. + * + * @return Path of repository directory. + * * @ingroup SCM */ -void edi_scm_ui_add(Evas_Object *parent); +char *edi_scm_ui_add(Evas_Object *parent); /** * @}