support view scale factor change.

use ctrl + mouse wheel up/down
This commit is contained in:
ChunEon Park 2014-01-27 01:21:02 +09:00
parent 967644fb2c
commit 867c6bf2ed
6 changed files with 58 additions and 1 deletions

2
README
View File

@ -58,6 +58,8 @@ Ctrl+W = Show/Hide Dummy Swallow Object
Ctrl++ = Font Size Up
Ctrl+- = Font Size Down
Ctrl+T = Insert Defaut Template Code
Ctrl+Mouse Wheel Up = View Scale Up
Ctrl+Mouse Wheel Down = View Scale Down
Ctrl+Shift+A = Insert Part Template Code: Table
Ctrl+Shift+B = Insert Part Template Code: Textblock
Ctrl+Shift+E = Insert Part Template Code: External

View File

@ -16,12 +16,12 @@ struct config_s
Eina_Strbuf *edc_data_path_buf; //pre-stored data paths for edc compile.
float font_size;
double view_scale;
void (*update_cb)(void *data, config_data *cd);
void *update_cb_data;
Evas_Coord_Size view_size;
Eina_Bool stats_bar : 1;
Eina_Bool linenumber : 1;
Eina_Bool part_highlight : 1;
@ -83,6 +83,7 @@ config_init(const char *edc_path, const char *edc_img_path,
config_edc_data_path_set(cd, edc_data_path);
cd->font_size = 1.0f;
cd->view_scale = 1;
cd->linenumber = EINA_TRUE;
cd->part_highlight = EINA_TRUE;
cd->dummy_swallow = EINA_TRUE;
@ -454,3 +455,19 @@ config_auto_indent_set(config_data *cd, Eina_Bool auto_indent)
{
cd->auto_indent = auto_indent;
}
void
config_view_scale_set(config_data *cd, double view_scale)
{
if (view_scale > MAX_VIEW_SCALE)
view_scale = MAX_VIEW_SCALE;
else if (view_scale < MIN_VIEW_SCALE)
view_scale = MIN_VIEW_SCALE;
cd->view_scale = view_scale;
}
double
config_view_scale_get(config_data *cd)
{
return cd->view_scale;
}

View File

@ -357,3 +357,14 @@ view_data_get(view_data *vd)
{
return vd->data;
}
void
view_scale_set(view_data *vd, double scale)
{
if (!vd->layout) return;
edje_object_scale_set(vd->layout, scale);
char buf[256];
snprintf(buf, sizeof(buf), "View Scale: %2.1fx", scale);
stats_info_msg_update(vd->sd, buf);
}

View File

@ -366,6 +366,27 @@ main_key_down_cb(void *data, int type EINA_UNUSED, void *ev)
return ECORE_CALLBACK_PASS_ON;
}
static Eina_Bool
main_mouse_wheel_cb(void *data, int type EINA_UNUSED, void *ev)
{
Ecore_Event_Mouse_Wheel *event = ev;
app_data *ad = data;
if (!ad->ctrl_pressed) return ECORE_CALLBACK_PASS_ON;
//Scale up/down layout
view_data *vd = edj_mgr_view_get(ad->em, NULL);
double scale = config_view_scale_get(ad->cd);
if (event->z < 0) scale += 0.1;
else scale -= 0.1;
config_view_scale_set(ad->cd, scale);
view_scale_set(vd, config_view_scale_get(ad->cd));
return ECORE_CALLBACK_PASS_ON;
}
static void
edc_view_set(app_data *ad, config_data *cd, stats_data *sd,
Eina_Stringshare *group)
@ -567,6 +588,7 @@ init(app_data *ad, int argc, char **argv)
ecore_event_init();
ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, main_key_down_cb, ad);
ecore_event_handler_add(ECORE_EVENT_KEY_UP, main_key_up_cb, ad);
ecore_event_handler_add(ECORE_EVENT_MOUSE_WHEEL, main_mouse_wheel_cb, ad);
elm_init(argc, argv);
elm_setup();

View File

@ -1,5 +1,7 @@
#define MAX_FONT_SIZE 5.0
#define MIN_FONT_SIZE 0.5
#define MAX_VIEW_SCALE 10
#define MIN_VIEW_SCALE 0.1
config_data *config_init(const char *edc_path, const char *edc_img_path, const char *edc_snd_path, const char *edc_fnt_path, const char *edc_data_path);
void config_term(config_data *cd);
@ -34,4 +36,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_view_scale_set(config_data *cd, double view_scale);
double config_view_scale_get(config_data *cd);

View File

@ -7,3 +7,4 @@ void view_dummy_toggle(view_data *vd, Eina_Bool msg);
void view_program_run(view_data *vd, const char *program);
Eina_Stringshare *view_group_name_get(view_data *vd);
void *view_data_get(view_data *vd);
void view_scale_set(view_data *vd, double scale);