enventor - support theme change in the option

but panes bug eeeeek.
This commit is contained in:
ChunEon Park 2013-09-24 02:29:46 +09:00
parent 0d491c03a3
commit 414186a9d7
15 changed files with 175 additions and 62 deletions

View File

@ -579,6 +579,12 @@ group { name: "menu_layout";
color2: 255 255 255 24;
color3: 255 255 255 18;
}
description { state: "anim" 0.0;
inherit: "default" 0.0;
color: 255 255 255 255;
color2: 255 255 255 58;
color3: 255 255 255 46;
}
}
part { name: "padding1";
type: SPACER;
@ -751,6 +757,19 @@ group { name: "menu_layout";
target: "bg";
target: "clipper";
after: "event_blocker_hide";
after: "title_anim";
}
program { name: "title_anim";
action: STATE_SET "anim" 0.0;
target: "title";
transition: LINEAR 2;
after: "title_anim2";
}
program { name: "title_anim2";
action: STATE_SET "default" 0.0;
target: "title";
transition: LINEAR 2;
after: "title_anim";
}
program { name: "event_blocker_hide";
signal: "elm,state,event_blocker,hide";

View File

@ -27,6 +27,7 @@ struct config_s
Eina_Bool part_highlight : 1;
Eina_Bool dummy_swallow : 1;
Eina_Bool auto_indent : 1;
Eina_Bool dark_theme : 1;
};
void
@ -306,6 +307,18 @@ config_apply(config_data *cd)
if (cd->update_cb) cd->update_cb(cd->update_cb_data, cd);
}
void
config_dark_theme_set(config_data *cd, Eina_Bool dark_theme)
{
cd->dark_theme = dark_theme;
}
Eina_Bool
config_dark_theme_get(config_data *cd)
{
return cd->dark_theme;
}
Eina_List *
config_edc_img_path_list_get(config_data *cd)
{

View File

@ -95,6 +95,16 @@ syntax_color_apply(edit_data *ed)
free(utf8);
}
void
edit_theme_change(edit_data *ed)
{
if (ed->syntax_color_timer) ecore_timer_del(ed->syntax_color_timer);
ed->syntax_color_timer = NULL;
color_theme_change(syntax_color_data_get(ed->sh),
config_dark_theme_get(ed->cd));
syntax_color_apply(ed);
}
static Eina_Bool
syntax_color_timer_cb(void *data)
{

View File

@ -3,4 +3,3 @@
const char *PROTO_EDC_PATH = "/tmp/.proto.edc";
char EDJE_PATH[PATH_MAX];
Eina_Bool DARK_THEME = EINA_FALSE;

View File

@ -3,8 +3,6 @@
#include "config.h"
#include "common.h"
int main(int argc, char **argv);
struct app_s
{
edit_data *ed;
@ -24,6 +22,38 @@ struct app_s
};
static const char *EDJE_CC_CMD;
static Eina_Bool DARK_THEME = EINA_FALSE;
int main(int argc, char **argv);
static void
theme_change(app_data *ad)
{
if (DARK_THEME == config_dark_theme_get(ad->cd)) return;
elm_theme_extension_del(NULL, EDJE_PATH);
if (config_dark_theme_get(ad->cd))
{
snprintf(EDJE_PATH, sizeof(EDJE_PATH), "%s/themes/enventor_dark.edj",
elm_app_data_dir_get());
elm_theme_set(NULL, "dark");
}
else
{
snprintf(EDJE_PATH, sizeof(EDJE_PATH), "%s/themes/enventor.edj",
elm_app_data_dir_get());
elm_theme_set(NULL, "default");
}
elm_theme_extension_add(NULL, EDJE_PATH);
menu_theme_change(ad->md);
stats_theme_change(ad->sd);
edit_theme_change(ad->ed);
DARK_THEME = config_dark_theme_get(ad->cd);
}
static Eina_Bool
rebuild_edc()
@ -451,12 +481,12 @@ static void
config_update_cb(void *data, config_data *cd)
{
app_data *ad = data;
theme_change(ad);
edje_cc_cmd_set(cd);
edit_line_number_toggle(ad->ed);
edit_font_size_update(ad->ed, EINA_FALSE);
statusbar_toggle(ad);
part_highlight_toggle(ad, EINA_FALSE);
view_dummy_toggle(VIEW_DATA, EINA_FALSE);
//previous build was failed, Need to rebuild then reload the edj.
@ -570,10 +600,6 @@ elm_setup()
char *scale = getenv("ELM_SCALE");
if (scale) elm_config_scale_set(atof(scale));
const char *theme = getenv("ELM_THEME");
if (theme) elm_theme_set(NULL, theme);
else theme = elm_theme_get(NULL);
elm_config_scroll_bounce_enabled_set(EINA_FALSE);
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
elm_app_compile_bin_dir_set(PACKAGE_BIN_DIR);
@ -582,16 +608,8 @@ elm_setup()
elm_app_info_set(main, "enventor",
"images/logo.png");
if (theme && !strncmp(theme, "dark", 4))
{
DARK_THEME = EINA_TRUE;
snprintf(EDJE_PATH, sizeof(EDJE_PATH), "%s/themes/enventor_dark.edj",
elm_app_data_dir_get());
}
else
snprintf(EDJE_PATH, sizeof(EDJE_PATH), "%s/themes/enventor.edj",
elm_app_data_dir_get());
snprintf(EDJE_PATH, sizeof(EDJE_PATH), "%s/themes/enventor.edj",
elm_app_data_dir_get());
elm_theme_extension_add(NULL, EDJE_PATH);
}

View File

@ -19,6 +19,7 @@ struct menu_s
Evas_Object *toggle_highlight;
Evas_Object *toggle_swallow;
Evas_Object *toggle_indent;
Evas_Object *toggle_theme;
Evas_Object *ctxpopup;
@ -207,6 +208,7 @@ setting_apply_btn_cb(void *data, Evas_Object *obj EINA_UNUSED,
config_part_highlight_set(cd, elm_check_state_get(md->toggle_highlight));
config_dummy_swallow_set(cd, elm_check_state_get(md->toggle_swallow));
config_auto_indent_set(cd, elm_check_state_get(md->toggle_indent));
config_dark_theme_set(cd, elm_check_state_get(md->toggle_theme));
config_apply(cd);
@ -300,6 +302,7 @@ setting_reset_btn_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
elm_check_state_set(md->toggle_highlight, config_part_highlight_get(cd));
elm_check_state_set(md->toggle_swallow, config_dummy_swallow_get(cd));
elm_check_state_set(md->toggle_indent, config_auto_indent_get(cd));
elm_check_state_set(md->toggle_theme, config_dark_theme_get(cd));
}
static void
@ -484,6 +487,21 @@ setting_open(menu_data *md)
elm_box_pack_end(box, toggle_indent);
//Toggle (Theme)
Evas_Object *toggle_theme = elm_check_add(box);
elm_object_style_set(toggle_theme, "toggle");
elm_object_part_text_set(toggle_theme, "on", "Dark");
elm_object_part_text_set(toggle_theme, "off", "Light");
elm_check_state_set(toggle_theme, config_dark_theme_get(md->cd));
evas_object_size_hint_weight_set(toggle_theme, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(toggle_theme, EVAS_HINT_FILL,
EVAS_HINT_FILL);
elm_object_text_set(toggle_theme, "Theme");
evas_object_show(toggle_theme);
elm_box_pack_end(box, toggle_theme);
Evas_Object *btn;
//Apply Button
@ -527,6 +545,7 @@ setting_open(menu_data *md)
md->toggle_highlight = toggle_highlight;
md->toggle_swallow = toggle_swallow;
md->toggle_indent = toggle_indent;
md->toggle_theme = toggle_theme;
}
static void
@ -994,6 +1013,12 @@ load_btn_cb(void *data, Evas_Object *obj EINA_UNUSED,
menu_edc_load(md);
}
void
menu_theme_change(menu_data *md)
{
elm_layout_file_set(md->menu_layout, EDJE_PATH, "menu_layout");
}
static void
menu_open(menu_data *md)
{

View File

@ -5,20 +5,34 @@ struct statusbar_s
{
Evas_Object *layout;
Eina_Stringshare *group_name;
int cur_line;
int max_line;
config_data *cd;
};
void
stats_theme_change(stats_data *sd)
{
elm_layout_file_set(sd->layout, EDJE_PATH, "statusbar_layout");
stats_edc_file_set(sd, sd->group_name);
stats_line_num_update(sd, sd->cur_line, sd->max_line);
stats_view_size_update(sd);
stats_cursor_pos_update(sd, 0, 0, 0, 0);
}
void
stats_line_num_update(stats_data *sd, int cur_line, int max_line)
{
char buf[128];
if (DARK_THEME)
if (config_dark_theme_get(sd->cd))
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);
else
snprintf(buf, sizeof(buf),
"<align=right>Line [<color=#000000>%d</color>:<color=#000000>%d</color>]</align>", cur_line, max_line);
elm_object_part_text_set(sd->layout, "elm.text.line", buf);
sd->cur_line = cur_line;
sd->max_line = max_line;
}
void
@ -26,7 +40,7 @@ stats_edc_file_set(stats_data *sd, Eina_Stringshare *group_name)
{
char buf[PATH_MAX];
const char *filename = ecore_file_file_get(config_edc_path_get(sd->cd));
if (DARK_THEME)
if (config_dark_theme_get(sd->cd))
snprintf(buf, sizeof(buf), "<align=right>File [<style=glow><color=#3399ff>%s</color></style>] Group [<style=glow><color=#3399ff>%s</color></style>]</align>", filename, group_name);
else
snprintf(buf, sizeof(buf), "<align=right>File [<color=#000000>%s</color>] Group [<color=#000000>%s</color>]</align>", filename, group_name);
@ -46,7 +60,7 @@ stats_init(Evas_Object *parent, config_data *cd)
evas_object_show(layout);
//FIXME: temporarily setup
if (DARK_THEME)
if (config_dark_theme_get(cd))
elm_object_part_text_set(layout, "elm.text.cur_pos",
"Cursor [<style=glow><color=#3399ff>0</color></style>,<style=glow><color=#3399ff>0</color></style>] [<style=glow><color=#3399ff>0.00</color></style>,<style=glow><color=#3399ff>0.00</color></style>]");
else
@ -96,7 +110,7 @@ stats_view_size_update(stats_data *sd)
config_view_size_get(sd->cd, &w, &h);
char buf[128];
if (DARK_THEME)
if (config_dark_theme_get(sd->cd))
snprintf(buf, sizeof(buf),
"Size [<style=glow><color=#3399ff>%d</color></style>x<style=glow><color=#3399ff>%d</color></style>]", w, h);
else
@ -110,7 +124,7 @@ void
stats_cursor_pos_update(stats_data *sd, Evas_Coord x, Evas_Coord y, float rel_x, float rel_y)
{
char buf[250];
if (DARK_THEME)
if (config_dark_theme_get(sd->cd))
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);
else

View File

@ -9,41 +9,53 @@
else if (ret == -1) goto finished; \
} \
#define COL_NUM 6
struct syntax_color_s
{
Eina_Strbuf *strbuf;
Eina_Stringshare *col1;
Eina_Stringshare *col2;
Eina_Stringshare *col3;
Eina_Stringshare *col4;
Eina_Stringshare *col5;
Eina_Stringshare *col6;
Eina_Stringshare *cols[COL_NUM];
};
void
color_theme_change(color_data *cd, Eina_Bool dark)
{
int i;
for(i = 0; i < COL_NUM; i++)
eina_stringshare_del(cd->cols[i]);
if (dark)
{
cd->cols[0] = eina_stringshare_add("A0A0A0");
cd->cols[1] = eina_stringshare_add("00FFFF");
cd->cols[2] = eina_stringshare_add("FFFF00");
cd->cols[3] = eina_stringshare_add("FF00FF");
cd->cols[4] = eina_stringshare_add("00FF00");
cd->cols[5] = eina_stringshare_add("FF0000");
}
else
{
cd->cols[0] = eina_stringshare_add("424242");
cd->cols[1] = eina_stringshare_add("A000A0");
cd->cols[2] = eina_stringshare_add("0000A0");
cd->cols[3] = eina_stringshare_add("969600");
cd->cols[4] = eina_stringshare_add("009600");
cd->cols[5] = eina_stringshare_add("00C0C0");
}
}
color_data *
color_init(Eina_Strbuf *strbuf)
{
color_data *cd = malloc(sizeof(color_data));
cd->strbuf = strbuf;
if (DARK_THEME)
{
cd->col1 = eina_stringshare_add("A0A0A0");
cd->col2 = eina_stringshare_add("00FFFF");
cd->col3 = eina_stringshare_add("FFFF00");
cd->col4 = eina_stringshare_add("FF00FF");
cd->col5 = eina_stringshare_add("00FF00");
cd->col6 = eina_stringshare_add("FF0000");
}
else
{
cd->col1 = eina_stringshare_add("424242");
cd->col2 = eina_stringshare_add("A000A0");
cd->col3 = eina_stringshare_add("0000A0");
cd->col4 = eina_stringshare_add("969600");
cd->col5 = eina_stringshare_add("009600");
cd->col6 = eina_stringshare_add("00C0C0");
}
cd->cols[0] = eina_stringshare_add("424242");
cd->cols[1] = eina_stringshare_add("A000A0");
cd->cols[2] = eina_stringshare_add("0000A0");
cd->cols[3] = eina_stringshare_add("969600");
cd->cols[4] = eina_stringshare_add("009600");
cd->cols[5] = eina_stringshare_add("00C0C0");
return cd;
}
@ -51,12 +63,9 @@ color_init(Eina_Strbuf *strbuf)
void
color_term(color_data *cd)
{
eina_stringshare_del(cd->col1);
eina_stringshare_del(cd->col2);
eina_stringshare_del(cd->col3);
eina_stringshare_del(cd->col4);
eina_stringshare_del(cd->col5);
eina_stringshare_del(cd->col6);
int i;
for(i = 0; i < COL_NUM; i++)
eina_stringshare_del(cd->cols[i]);
free(cd);
}
@ -405,13 +414,13 @@ color_apply(color_data *cd, const char *src, int length)
}
//handle comment: /* ~ */
ret = comment_apply(strbuf, &src, length, &cur, &prev, cd->col5,
ret = comment_apply(strbuf, &src, length, &cur, &prev, cd->cols[4],
&inside_comment);
if (ret == 1) continue;
else if (ret == -1) goto finished;
//handle comment: //
ret = comment2_apply(strbuf, &src, length, &cur, &prev, cd->col5,
ret = comment2_apply(strbuf, &src, length, &cur, &prev, cd->cols[4],
&inside_comment);
if (ret == 1) continue;
else if (ret == -1) goto finished;
@ -438,13 +447,13 @@ color_apply(color_data *cd, const char *src, int length)
if (ret == 1) continue;
//handle comment: #
ret = sharp_apply(strbuf, &src, length, &cur, &prev, cd->col6);
ret = sharp_apply(strbuf, &src, length, &cur, &prev, cd->cols[5]);
if (ret == 1) continue;
else if (ret == -1) goto finished;
//FIXME: construct from the configuration file
//syntax group 1
Eina_Stringshare *col1 = cd->col1;
Eina_Stringshare *col1 = cd->cols[0];
COLOR_INSERT(strbuf, &src, length, &cur, &prev, "{", col1);
COLOR_INSERT(strbuf, &src, length, &cur, &prev, "}", col1);
COLOR_INSERT(strbuf, &src, length, &cur, &prev, "[", col1);
@ -453,7 +462,7 @@ color_apply(color_data *cd, const char *src, int length)
COLOR_INSERT(strbuf, &src, length, &cur, &prev, ":", col1);
//syntax group 2
Eina_Stringshare *col2 = cd->col2;
Eina_Stringshare *col2 = cd->cols[1];
COLOR_INSERT(strbuf, &src, length, &cur, &prev, "collections", col2);
COLOR_INSERT(strbuf, &src, length, &cur, &prev, "description", col2);
COLOR_INSERT(strbuf, &src, length, &cur, &prev, "fill", col2);
@ -469,7 +478,7 @@ color_apply(color_data *cd, const char *src, int length)
COLOR_INSERT(strbuf, &src, length, &cur, &prev, "rel2", col2);
//syntax group 3
Eina_Stringshare *col3 = cd->col3;
Eina_Stringshare *col3 = cd->cols[2];
COLOR_INSERT(strbuf, &src, length, &cur, &prev, "action", col3);
COLOR_INSERT(strbuf, &src, length, &cur, &prev, "after", col3);
COLOR_INSERT(strbuf, &src, length, &cur, &prev, "align", col3);
@ -510,7 +519,7 @@ color_apply(color_data *cd, const char *src, int length)
COLOR_INSERT(strbuf, &src, length, &cur, &prev, "visible", col3);
//syntax group 4
Eina_Stringshare *col4 = cd->col4;
Eina_Stringshare *col4 = cd->cols[3];
COLOR_INSERT(strbuf, &src, length, &cur, &prev, "ACCELERATE_FACTOR",
col4);
COLOR_INSERT(strbuf, &src, length, &cur, &prev, "ACCELERATE", col4);

View File

@ -34,3 +34,6 @@ void config_auto_indent_set(config_data *cd, Eina_Bool auto_indent);
Eina_Bool config_auto_indent_get(config_data *cd);
void config_font_size_set(config_data *cd, float font_size);
float config_font_size_get(config_data *cd);
void config_dark_theme_set(config_data *cd, Eina_Bool dark_theme);
Eina_Bool config_dark_theme_get(config_data *cd);

View File

@ -14,3 +14,4 @@ void edit_view_sync(edit_data *ed);
void edit_font_size_update(edit_data *ed, Eina_Bool msg);
void edit_template_insert(edit_data *ed);
void edit_template_part_insert(edit_data *ed, Edje_Part_Type type);
void edit_theme_change(edit_data *ed);

View File

@ -1,4 +1,3 @@
extern const char *PROTO_EDC_PATH;
extern char EDJE_PATH[PATH_MAX];
extern Eina_Bool DARK_THEME;

View File

@ -11,3 +11,4 @@ Eina_Bool menu_edc_load(menu_data *md);
void menu_exit(menu_data *md);
Eina_Bool menu_about(menu_data *md);
Eina_Bool menu_setting(menu_data *md);
void menu_theme_change(menu_data *md);

View File

@ -1,5 +1,6 @@
Evas_Object *panes_create(Evas_Object *parent);
void panes_full_view_right(Evas_Object *panes);
void panes_full_view_left(Evas_Object *panes);
void panes_theme_change(Evas_Object *panes);

View File

@ -7,4 +7,4 @@ void stats_line_num_update(stats_data *sd, int cur_line, int max_line);
Evas_Object *stats_obj_get(stats_data *sd);
void stats_edc_file_set(stats_data *sd, const char *group_name);
Eina_Stringshare *stats_group_name_get(stats_data *sd);
void stats_theme_change(stats_data *sd);

View File

@ -2,4 +2,5 @@ color_data *color_init(Eina_Strbuf *strbuf);
void color_term(color_data *cd);
const char *color_cancel(color_data *cd, const char *str, int length);
const char *color_apply(color_data *cd, const char *str, int length);
void color_theme_change(color_data *cd, Eina_Bool dark);