forked from enlightenment/edi
edi_scm: sanitize titie.
This patch ensures a consistent window title when used internally (in Edi) or externally. The title should correspond to that Edi provides in its window title.
This commit is contained in:
parent
b586e84474
commit
7ea3ce5d84
|
@ -1,8 +1,8 @@
|
||||||
#include <Edi.h>
|
#include <Edi.h>
|
||||||
#include "edi_scm_ui.h"
|
#include "edi_scm_ui.h"
|
||||||
|
|
||||||
#define DEFAULT_WIDTH 460
|
#define DEFAULT_WIDTH 480
|
||||||
#define DEFAULT_HEIGHT 280
|
#define DEFAULT_HEIGHT 240
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_win_del_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
|
_win_del_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
|
||||||
|
@ -11,21 +11,32 @@ _win_del_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUS
|
||||||
ecore_main_loop_quit();
|
ecore_main_loop_quit();
|
||||||
}
|
}
|
||||||
|
|
||||||
static Evas_Object *
|
static void
|
||||||
_setup_win(void)
|
_win_title_set(Evas_Object *win)
|
||||||
{
|
{
|
||||||
Evas_Object *win, *icon;
|
|
||||||
Eina_Strbuf *title;
|
Eina_Strbuf *title;
|
||||||
char *cwd;
|
char *workdir;
|
||||||
|
|
||||||
cwd = getcwd(NULL, PATH_MAX);
|
workdir = _edi_scm_ui_workdir_get();
|
||||||
|
if (!workdir)
|
||||||
|
workdir = getcwd(NULL, PATH_MAX);
|
||||||
|
|
||||||
title = eina_strbuf_new();
|
title = eina_strbuf_new();
|
||||||
eina_strbuf_append_printf(title, "Edi Source Control :: %s", cwd);
|
eina_strbuf_append_printf(title, "Edi Source Control :: %s", workdir);
|
||||||
|
elm_win_title_set(win, eina_strbuf_string_get(title));
|
||||||
|
eina_strbuf_free(title);
|
||||||
|
|
||||||
|
free(workdir);
|
||||||
|
}
|
||||||
|
|
||||||
|
static Evas_Object *
|
||||||
|
_win_add(void)
|
||||||
|
{
|
||||||
|
Evas_Object *win, *icon;
|
||||||
|
|
||||||
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
|
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);
|
icon = elm_icon_add(win);
|
||||||
elm_icon_standard_set(icon, "edi");
|
elm_icon_standard_set(icon, "edi");
|
||||||
elm_win_icon_object_set(win, icon);
|
elm_win_icon_object_set(win, icon);
|
||||||
|
@ -33,8 +44,7 @@ _setup_win(void)
|
||||||
evas_object_resize(win, DEFAULT_WIDTH * elm_config_scale_get(), DEFAULT_HEIGHT * elm_config_scale_get());
|
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);
|
evas_object_smart_callback_add(win, "delete,request", _win_del_cb, NULL);
|
||||||
|
|
||||||
eina_strbuf_free(title);
|
_win_title_set(win);
|
||||||
free(cwd);
|
|
||||||
|
|
||||||
return win;
|
return win;
|
||||||
}
|
}
|
||||||
|
@ -46,13 +56,17 @@ int main(int argc, char **argv)
|
||||||
ecore_init();
|
ecore_init();
|
||||||
elm_init(argc, argv);
|
elm_init(argc, argv);
|
||||||
|
|
||||||
win = _setup_win();
|
if (!edi_scm_generic_init())
|
||||||
|
exit(1 << 0);
|
||||||
|
|
||||||
|
win = _win_add();
|
||||||
edi_scm_ui_add(win);
|
edi_scm_ui_add(win);
|
||||||
elm_win_center(win, EINA_TRUE, EINA_TRUE);
|
elm_win_center(win, EINA_TRUE, EINA_TRUE);
|
||||||
evas_object_show(win);
|
evas_object_show(win);
|
||||||
|
|
||||||
ecore_main_loop_begin();
|
ecore_main_loop_begin();
|
||||||
|
|
||||||
|
edi_scm_shutdown();
|
||||||
ecore_shutdown();
|
ecore_shutdown();
|
||||||
elm_shutdown();
|
elm_shutdown();
|
||||||
|
|
||||||
|
|
|
@ -507,6 +507,48 @@ _edi_scm_ui_file_changes_cb(void *data EINA_UNUSED, int type EINA_UNUSED,
|
||||||
return ECORE_CALLBACK_DONE;
|
return ECORE_CALLBACK_DONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
_edi_scm_ui_workdir_get(void)
|
||||||
|
{
|
||||||
|
Edi_Scm_Engine *engine;
|
||||||
|
char *directory, *workdir, *path, *tmp;
|
||||||
|
|
||||||
|
engine = edi_scm_engine_get();
|
||||||
|
if (!engine)
|
||||||
|
exit(1 << 1);
|
||||||
|
|
||||||
|
tmp = path = workdir = NULL;
|
||||||
|
|
||||||
|
directory = strdup(engine->workdir);
|
||||||
|
|
||||||
|
while (directory)
|
||||||
|
{
|
||||||
|
path = edi_path_append(directory, engine->directory);
|
||||||
|
if (ecore_file_exists(path) && ecore_file_is_dir(path))
|
||||||
|
{
|
||||||
|
if (!strcmp(directory, "/"))
|
||||||
|
workdir = strdup(directory);
|
||||||
|
else
|
||||||
|
workdir = strdup(ecore_file_file_get(directory));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp = ecore_file_dir_get(directory);
|
||||||
|
free(directory);
|
||||||
|
directory = tmp;
|
||||||
|
free(path);
|
||||||
|
path = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (path)
|
||||||
|
free(path);
|
||||||
|
|
||||||
|
if (directory)
|
||||||
|
free(directory);
|
||||||
|
|
||||||
|
return workdir;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
edi_scm_ui_add(Evas_Object *parent)
|
edi_scm_ui_add(Evas_Object *parent)
|
||||||
{
|
{
|
||||||
|
@ -520,9 +562,6 @@ edi_scm_ui_add(Evas_Object *parent)
|
||||||
const char *remote_name, *remote_email;
|
const char *remote_name, *remote_email;
|
||||||
Eina_Bool staged_changes;
|
Eina_Bool staged_changes;
|
||||||
|
|
||||||
if (!edi_scm_generic_init())
|
|
||||||
exit(1 << 0);
|
|
||||||
|
|
||||||
engine = edi_scm_engine_get();
|
engine = edi_scm_engine_get();
|
||||||
if (!engine)
|
if (!engine)
|
||||||
exit(1 << 1);
|
exit(1 << 1);
|
||||||
|
|
|
@ -30,6 +30,7 @@ extern "C" {
|
||||||
*/
|
*/
|
||||||
void edi_scm_ui_add(Evas_Object *parent);
|
void edi_scm_ui_add(Evas_Object *parent);
|
||||||
|
|
||||||
|
char *_edi_scm_ui_workdir_get(void);
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -532,6 +532,7 @@ edi_scm_shutdown()
|
||||||
eina_stringshare_del(engine->name);
|
eina_stringshare_del(engine->name);
|
||||||
eina_stringshare_del(engine->directory);
|
eina_stringshare_del(engine->directory);
|
||||||
eina_stringshare_del(engine->path);
|
eina_stringshare_del(engine->path);
|
||||||
|
free(engine->workdir);
|
||||||
free(engine);
|
free(engine);
|
||||||
|
|
||||||
_edi_scm_global_object = NULL;
|
_edi_scm_global_object = NULL;
|
||||||
|
@ -741,7 +742,7 @@ _edi_scm_git_init()
|
||||||
engine->status_get = _edi_scm_git_status_get;
|
engine->status_get = _edi_scm_git_status_get;
|
||||||
|
|
||||||
if (edi_project_get())
|
if (edi_project_get())
|
||||||
engine->workdir = (char *) edi_project_get();
|
engine->workdir = strdup(edi_project_get());
|
||||||
else
|
else
|
||||||
engine->workdir = getcwd(NULL, PATH_MAX);
|
engine->workdir = getcwd(NULL, PATH_MAX);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue