statusbar - refactoring.

make it singleton style.
it's clear that statusbar has only one instance.
This commit is contained in:
ChunEon Park 2014-02-04 22:45:41 +09:00
parent 9d2e70f631
commit e0672e4ae5
5 changed files with 62 additions and 64 deletions

View File

@ -15,7 +15,6 @@ struct editor_s
Evas_Object *parent;
syntax_helper *sh;
stats_data *sd;
parser_data *pd;
int cur_line;
@ -158,7 +157,7 @@ save_msg_show(edit_data *ed)
else
snprintf(buf, sizeof(buf), "Already saved. \"%s\"", config_edc_path_get());
stats_info_msg_update(ed->sd, buf);
stats_info_msg_update(buf);
}
Eina_Bool
@ -269,8 +268,7 @@ edit_template_insert(edit_data *ed)
if (!t)
{
stats_info_msg_update(ed->sd,
"Can't insert template code here. Move the cursor inside the \"Images|Parts|Part\" scope.");
stats_info_msg_update("Can't insert template code here. Move the cursor inside the \"Images|Parts|Part\" scope.");
return;
}
@ -299,7 +297,7 @@ edit_template_insert(edit_data *ed)
syntax_color_timer_update(ed);
snprintf(buf, sizeof(buf), "Template code inserted. (%s)", buf2);
stats_info_msg_update(ed->sd, buf);
stats_info_msg_update(buf);
}
void
@ -379,7 +377,7 @@ edit_template_part_insert(edit_data *ed, Edje_Part_Type type)
syntax_color_timer_update(ed);
snprintf(buf, sizeof(buf), "Template code inserted. (%s Part)", part);
stats_info_msg_update(ed->sd, buf);
stats_info_msg_update(buf);
}
static void
@ -405,7 +403,7 @@ cur_line_pos_set(edit_data *ed)
if (line < 0) line = 0;
if (ed->cur_line == line) return;
ed->cur_line = line;
stats_line_num_update(ed->sd, ed->cur_line, ed->line_max);
stats_line_num_update(ed->cur_line, ed->line_max);
}
static void
@ -512,7 +510,7 @@ image_preview_show(edit_data *ed, char *cur, Evas_Coord x, Evas_Coord y)
char buf[PATH_MAX];
snprintf(buf, sizeof(buf), "Failed to load the image. \"%s\"",
filename);
stats_info_msg_update(ed->sd, buf);
stats_info_msg_update(buf);
succeed = EINA_FALSE;
}
@ -650,13 +648,12 @@ key_up_cb(void *data, int type EINA_UNUSED, void *ev)
}
edit_data *
edit_init(Evas_Object *parent, stats_data *sd)
edit_init(Evas_Object *parent)
{
parser_data *pd = parser_init();
syntax_helper *sh = syntax_init();
edit_data *ed = calloc(1, sizeof(edit_data));
ed->sd = sd;
ed->pd = pd;
ed->sh = sh;
@ -795,7 +792,7 @@ edit_edc_read(edit_data *ed, const char *file_path)
Eina_Stringshare *group_name =
parser_first_group_name_get(ed->pd, ed->en_edit);
stats_edc_group_set(ed->sd, group_name);
stats_edc_group_set(group_name);
base_title_set(config_edc_path_get());
ecore_animator_add(syntax_color_timer_cb, ed);
@ -849,7 +846,7 @@ edit_new(edit_data *ed)
char buf[PATH_MAX];
snprintf(buf, sizeof(buf), "File Path: \"%s\"", config_edc_path_get());
stats_info_msg_update(ed->sd, buf);
stats_info_msg_update(buf);
}
void
@ -862,5 +859,5 @@ edit_font_size_update(edit_data *ed, Eina_Bool msg)
char buf[128];
snprintf(buf, sizeof(buf), "Font Size: %1.1fx", config_font_size_get());
stats_info_msg_update(ed->sd, buf);
stats_info_msg_update(buf);
}

View File

@ -110,14 +110,14 @@ edj_mgr_view_del(view_data *vd)
}
view_data *
edj_mgr_view_new(const char *group, stats_data *sd)
edj_mgr_view_new(const char *group)
{
edj_mgr *em = g_em;
edj_data *edj = calloc(1, sizeof(edj_data));
if (!edj) return NULL;
view_data *vd = view_init(em->layout, group, sd, view_del_cb, edj);
view_data *vd = view_init(em->layout, group, view_del_cb, edj);
if (!vd)
{
free(edj);

View File

@ -6,8 +6,6 @@
struct viewer_s
{
stats_data *sd;
Evas_Object *parent;
Evas_Object *layout;
Evas_Object *scroller;
@ -92,7 +90,7 @@ layout_resize_cb(void *data, Evas *e EINA_UNUSED,
Evas_Coord w, h;
evas_object_geometry_get(obj, NULL, NULL, &w, &h);
config_view_size_set(w, h);
stats_view_size_update(vd->sd);
stats_view_size_update();
}
static void
@ -106,7 +104,7 @@ rect_mouse_move_cb(void *data, Evas *e EINA_UNUSED,
Evas_Coord x, y, w, h;
evas_object_geometry_get(obj, &x, &y, &w, &h);
stats_cursor_pos_update(vd->sd, ev->cur.canvas.x - x, ev->cur.canvas.y - y,
stats_cursor_pos_update(ev->cur.canvas.x - x, ev->cur.canvas.y - y,
(float) (ev->cur.canvas.x - x) / (float) w,
(float) (ev->cur.canvas.y - y) / (float) h);
}
@ -226,12 +224,12 @@ view_dummy_toggle(view_data *vd, Eina_Bool msg)
if (dummy_on == vd->dummy_on) return;
if (dummy_on)
{
if (msg) stats_info_msg_update(vd->sd, "Dummy Swallow Enabled.");
if (msg) stats_info_msg_update("Dummy Swallow Enabled.");
dummy_obj_new(vd->layout);
}
else
{
if (msg) stats_info_msg_update(vd->sd, "Dummy Swallow Disabled.");
if (msg) stats_info_msg_update("Dummy Swallow Disabled.");
dummy_obj_del(vd->layout);
}
@ -239,12 +237,11 @@ view_dummy_toggle(view_data *vd, Eina_Bool msg)
}
view_data *
view_init(Evas_Object *parent, const char *group, stats_data *sd,
view_init(Evas_Object *parent, const char *group,
void (*del_cb)(void *data), void *data)
{
view_data *vd = calloc(1, sizeof(view_data));
vd->parent = parent;
vd->sd = sd;
vd->scroller = view_scroller_create(parent);
vd->dummy_on = config_dummy_swallow_get();
@ -289,7 +286,7 @@ view_program_run(view_data *vd, const char *program)
edje_edit_program_run(vd->layout, program);
char buf[256];
snprintf(buf, sizeof(buf), "Program Run: \"%s\"", program);
stats_info_msg_update(vd->sd, buf);
stats_info_msg_update(buf);
}
void

View File

@ -6,7 +6,6 @@
typedef struct app_s
{
edit_data *ed;
stats_data *sd;
Eio_Monitor *edc_monitor;
@ -88,17 +87,17 @@ part_highlight_toggle(app_data *ad, Eina_Bool msg)
if (!msg) return;
if (highlight)
stats_info_msg_update(ad->sd, "Part Highlighting Enabled.");
stats_info_msg_update("Part Highlighting Enabled.");
else
stats_info_msg_update(ad->sd, "Part Highlighting Disabled.");
stats_info_msg_update("Part Highlighting Disabled.");
}
static void
auto_indentation_toggle(app_data *ad)
{
Eina_Bool toggle = !config_auto_indent_get();
if (toggle) stats_info_msg_update(ad->sd, "Auto Indentation Enabled.");
else stats_info_msg_update(ad->sd, "Auto Indentation Disabled.");
if (toggle) stats_info_msg_update("Auto Indentation Enabled.");
else stats_info_msg_update("Auto Indentation Disabled.");
config_auto_indent_set(toggle);
}
@ -323,21 +322,21 @@ main_mouse_wheel_cb(void *data, int type EINA_UNUSED, void *ev)
char buf[256];
snprintf(buf, sizeof(buf), "View Scale: %2.2fx", scale);
stats_info_msg_update(ad->sd, buf);
stats_info_msg_update(buf);
return ECORE_CALLBACK_PASS_ON;
}
static void
edc_view_set(app_data *ad, stats_data *sd, Eina_Stringshare *group)
edc_view_set(app_data *ad, Eina_Stringshare *group)
{
view_data *vd = edj_mgr_view_get(group);
if (vd) edj_mgr_view_switch_to(vd);
else vd = edj_mgr_view_new(group, sd);
else vd = edj_mgr_view_new(group);
if (!vd) return;
if (group) stats_edc_group_set(sd, group);
if (group) stats_edc_group_set(group);
}
static void
@ -345,15 +344,15 @@ view_sync_cb(void *data, Eina_Stringshare *part_name,
Eina_Stringshare *group_name)
{
app_data *ad = data;
if (stats_group_name_get(ad->sd) != group_name)
edc_view_set(ad, ad->sd, group_name);
if (stats_group_name_get() != group_name)
edc_view_set(ad, group_name);
view_part_highlight_set(VIEW_DATA, part_name);
}
static void
edc_edit_set(app_data *ad, stats_data *sd)
edc_edit_set(app_data *ad)
{
edit_data *ed = edit_init(base_layout_get(), sd);
edit_data *ed = edit_init(base_layout_get());
edit_edc_read(ed, config_edc_path_get());
base_right_view_set(edit_obj_get(ed));
edit_view_sync_cb_set(ed, view_sync_cb, ad);
@ -363,10 +362,9 @@ edc_edit_set(app_data *ad, stats_data *sd)
static void
statusbar_set(app_data *ad)
{
stats_data *sd = stats_init(base_layout_get());
Evas_Object *obj = stats_init(base_layout_get());
elm_object_part_content_set(base_layout_get(), "elm.swallow.statusbar",
stats_obj_get(sd));
ad->sd = sd;
obj);
config_stats_bar_set(EINA_TRUE);
base_statusbar_toggle();
}
@ -389,7 +387,7 @@ config_update_cb(void *data)
build_edc();
edit_changed_set(ad->ed, EINA_FALSE);
edj_mgr_clear();
edc_view_set(ad, ad->sd, stats_group_name_get(ad->sd));
edc_view_set(ad, stats_group_name_get());
if (ad->edc_monitor) eio_monitor_del(ad->edc_monitor);
ad->edc_monitor = eio_monitor_add(config_edc_path_get());
}
@ -541,8 +539,8 @@ init(app_data *ad, int argc, char **argv)
edj_mgr_set(ad);
statusbar_set(ad);
edc_edit_set(ad, ad->sd);
edc_view_set(ad, ad->sd, stats_group_name_get(ad->sd));
edc_edit_set(ad);
edc_view_set(ad, stats_group_name_get());
menu_init(ad->ed);
hotkeys_set(ad->ed);
@ -559,7 +557,7 @@ term(app_data *ad)
menu_term();
edit_term(ad->ed);
edj_mgr_term();
stats_term(ad->sd);
stats_term();
base_gui_term();
config_term();

View File

@ -1,17 +1,21 @@
#include <Elementary.h>
#include "common.h"
struct statusbar_s
typedef struct statusbar_s
{
Evas_Object *layout;
Eina_Stringshare *group_name;
int cur_line;
int max_line;
};
} stats_data;
stats_data *g_sd = NULL;
void
stats_line_num_update(stats_data *sd, int cur_line, int max_line)
stats_line_num_update(int cur_line, int max_line)
{
stats_data *sd = g_sd;
char buf[128];
snprintf(buf, sizeof(buf),
"<align=right>Line [<style=glow><color=#3399ff>%d</color></style>:<style=glow><color=#3399ff>%d</color></style>]</align>", cur_line, max_line);
@ -21,18 +25,21 @@ stats_line_num_update(stats_data *sd, int cur_line, int max_line)
}
void
stats_edc_group_set(stats_data *sd, Eina_Stringshare *group_name)
stats_edc_group_set(Eina_Stringshare *group_name)
{
stats_data *sd = g_sd;
char buf[1028];
snprintf(buf, sizeof(buf), "<align=right>Group [<style=glow><color=#3399ff>%s</color></style></align>", group_name);
elm_object_part_text_set(sd->layout, "elm.text.group_name", buf);
sd->group_name = eina_stringshare_add(group_name);
}
stats_data *
Evas_Object *
stats_init(Evas_Object *parent)
{
stats_data *sd = calloc(1, sizeof(stats_data));
g_sd = sd;
Evas_Object *layout = elm_layout_add(parent);
elm_layout_file_set(layout, EDJE_PATH, "statusbar_layout");
@ -40,43 +47,41 @@ stats_init(Evas_Object *parent)
sd->layout = layout;
stats_cursor_pos_update(sd, 0, 0, 0, 0);
stats_edc_group_set(sd, NULL);
stats_cursor_pos_update(0, 0, 0, 0);
stats_edc_group_set(NULL);
return sd;
return layout;
}
Evas_Object *
stats_obj_get(stats_data *sd)
{
return sd->layout;
}
Eina_Stringshare *stats_group_name_get(stats_data *sd)
Eina_Stringshare *stats_group_name_get()
{
stats_data *sd = g_sd;
return sd->group_name;
}
void
stats_term(stats_data *sd)
stats_term()
{
if (!sd) return;
stats_data *sd = g_sd;
eina_stringshare_del(sd->group_name);
free(sd);
}
void
stats_info_msg_update(stats_data *sd, const char *msg)
stats_info_msg_update(const char *msg)
{
if (!config_stats_bar_get()) return;
stats_data *sd = g_sd;
elm_object_part_text_set(sd->layout, "elm.text.info_msg", msg);
elm_object_signal_emit(sd->layout, "elm,action,info_msg,show", "");
}
void
stats_view_size_update(stats_data *sd)
stats_view_size_update()
{
stats_data *sd = g_sd;
Evas_Coord w, h;
config_view_size_get(&w, &h);
@ -88,8 +93,9 @@ stats_view_size_update(stats_data *sd)
}
void
stats_cursor_pos_update(stats_data *sd, Evas_Coord x, Evas_Coord y, float rel_x, float rel_y)
stats_cursor_pos_update(Evas_Coord x, Evas_Coord y, float rel_x, float rel_y)
{
stats_data *sd = g_sd;
char buf[250];
snprintf(buf, sizeof(buf),
"Cursor [<style=glow><color=#3399ff>%d</color></style>,<style=glow><color=#3399ff>%d</color></style>] [<style=glow><color=#3399ff>%0.2f</color></style>,<style=glow><color=#3399ff>%0.2f</color></style>]", x, y, rel_x, rel_y);