Hello, All. In message from 15 мая 2009 Carsten Haitzler wrote:
> On Tue, 12 May 2009 15:28:42 +0400 "Sergey P. Semernin" > <sergey.semer...@gmail.com> said: > > hey may! again - can you attach the patch not inline it? :) > Ok. Sorry. Attaching. Sincerely yours, Sergey. -- Jabber/XMPP: sergey.semer...@gmail.com Cellular: +7-909-206-5992
Some improvements on efm_path module: 1. fixed "Location:" label sizing, 2. added button to clear path entry, 3. added button to go to the path specified in entry, 4. added image files for modified module theme. What need to do: 1. Make path entry history in efm2 user configuration file. 2. Make combobox for path entry. (We have'nt combobox in "e" now? In etk and ewl combos are exists, but not in e...) 3. Make path autocompletion in entry (from history and real path). Makefile.am | 2 e-module-efm_path.edc | 295 ++++++++++++++++++++++++++++++++++++++++++++++++-- src/e_mod_main.c | 56 ++++++--- 3 files changed, 326 insertions(+), 27 deletions(-) Index: E-MODULES-EXTRA/efm_path/e-module-efm_path.edc =================================================================== --- E-MODULES-EXTRA/efm_path/e-module-efm_path.edc (revision 40597) +++ E-MODULES-EXTRA/efm_path/e-module-efm_path.edc (working copy) @@ -1,6 +1,12 @@ images { image: "entry.png" COMP; + image: "bt_base1.png" COMP; + image: "bt_base2.png" COMP; + image: "clear.png" COMP; + image: "go.png" COMP; + image: "bt_hilight.png" COMP; + image: "bt_shine.png" COMP; } collections @@ -41,22 +47,139 @@ color: 255 255 255 0; } } - part + + // Clear button + part { - name: "e.swallow.location"; - type: SWALLOW; - description + name: "bg_clear"; + type: IMAGE; + mouse_events: 1; + repeat_events: 1; + description + { + state: "default" 0.0; + align: 0.0 0.5; + rel1.to: "base"; + rel2 + { + relative: 0.0 1.0; + to: "base"; + } + max: 28 28; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + image + { + normal: "bt_base2.png"; + border: 7 7 7 7; + } + } + description + { + state: "down" 0.0; + inherit: "default" 0.0; + image.normal: "bt_base1.png"; + } + } + part + { + name: "img_clear"; + type: IMAGE; + mouse_events: 0; + description { state: "default" 0.0; - align: 0.0 0.5; - rel1.to: "base"; + max: 18 18; + rel1 + { + offset: 7 7; + to: "bg_clear"; + } + rel2 + { + offset: -8 -8; + to: "bg_clear"; + } + image.normal: "clear.png"; + } + } + part + { + name: "fg1_clear"; + type: IMAGE; + mouse_events: 1; + repeat_events: 1; + description + { + state: "default" 0.0; + rel1.to: "bg_clear"; rel2 + { + relative: 1.0 0.5; + to: "bg_clear"; + } + image { - relative: 0.2 1.0; - to: "base"; + normal: "bt_hilight.png"; + border: 7 7 7 0; } } } + part + { + name: "fg2_clear"; + type: IMAGE; + mouse_events: 1; + repeat_events: 1; + description + { + state: "default" 0.0; + rel1.to: "bg_clear"; + rel2.to: "bg_clear"; + image + { + normal: "bt_shine.png"; + border: 7 7 7 7; + } + } + } + + // Location text label + part + { + name: "e.text.title"; + type: TEXT; + mouse_events: 0; + scale: 1; + description + { + state: "default" 0.0; + visible: 1; + align: 0.0 0.5; + rel1 + { + relative: 1.0 0.0; + to_x: "bg_clear"; + to_y: "base"; + } + rel2 + { + relative: 0.0 1.0; + to_x: "e.swallow.entry"; + to_y: "base"; + } + color: 0 0 0 255; + text + { + font: "Sans"; + size: 10; + min: 1 1; + max: 1 1; + align: 0.0 0.5; + } + } + } + // Path entry part { name: "e.swallow.entry"; @@ -67,11 +190,163 @@ rel1 { relative: 1.0 0.0; - to_x: "e.swallow.location"; + to_x: "e.text.title"; + to_y: "base"; } - rel2.to: "base"; + rel2 + { + relative: 0.0 1.0; + to_x: "bg_go"; + to_y: "base"; + } } } + + // Go button + part + { + name: "bg_go"; + type: IMAGE; + mouse_events: 1; + repeat_events: 1; + description + { + state: "default" 0.0; + align: 1.0 0.5; + rel1 + { + relative: 1.0 0.0; + to: "base"; + } + rel2.to: "base"; + max: 28 28; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + image + { + normal: "bt_base2.png"; + border: 7 7 7 7; + } + } + description + { + state: "down" 0.0; + inherit: "default" 0.0; + image.normal: "bt_base1.png"; + } + } + part + { + name: "img_go"; + type: IMAGE; + mouse_events: 0; + description + { + state: "default" 0.0; + max: 18 18; + rel1 + { + offset: 7 7; + to: "bg_go"; + } + rel2 + { + offset: -8 -8; + to: "bg_go"; + } + image.normal: "go.png"; + } + } + part + { + name: "fg1_go"; + type: IMAGE; + mouse_events: 1; + repeat_events: 1; + description + { + state: "default" 0.0; + rel1.to: "bg_go"; + rel2 + { + relative: 1.0 0.5; + to: "bg_go"; + } + image + { + normal: "bt_hilight.png"; + border: 7 7 7 0; + } + } + } + part + { + name: "fg2_go"; + type: IMAGE; + mouse_events: 1; + repeat_events: 1; + description + { + state: "default" 0.0; + rel1.to: "bg_go"; + rel2.to: "bg_go"; + image + { + normal: "bt_shine.png"; + border: 7 7 7 7; + } + } + } } + + programs + { + program + { + name: "clear_down"; + signal: "mouse,down,1"; + source: "bg_clear"; + action: STATE_SET "down" 0.0; + target: "bg_clear"; + } + program + { + name: "clear_up"; + signal: "mouse,up,1"; + source: "bg_clear"; + action: STATE_SET "default" 0.0; + target: "bg_clear"; + } + program + { + name: "clear_click"; + signal: "mouse,clicked,1"; + source: "bg_clear"; + action: SIGNAL_EMIT "e,clear,click" ""; + } + program + { + name: "go_down"; + signal: "mouse,down,1"; + source: "bg_go"; + action: STATE_SET "down" 0.0; + target: "bg_go"; + } + program + { + name: "go_up"; + signal: "mouse,up,1"; + source: "bg_go"; + action: STATE_SET "default" 0.0; + target: "bg_go"; + } + program + { + name: "go_click"; + signal: "mouse,clicked,1"; + source: "bg_go"; + action: SIGNAL_EMIT "e,go,click" ""; + } + } } } Index: E-MODULES-EXTRA/efm_path/src/e_mod_main.c =================================================================== --- E-MODULES-EXTRA/efm_path/src/e_mod_main.c (revision 40597) +++ E-MODULES-EXTRA/efm_path/src/e_mod_main.c (working copy) @@ -5,7 +5,7 @@ struct _Instance { E_Gadcon_Client *gcc; - Evas_Object *o_entry, *o_base, *o_loc, *o_event; + Evas_Object *o_entry, *o_base, *o_event; E_Toolbar *tbar; char *path; }; @@ -34,6 +34,10 @@ void *event_info); static void _cb_mouse_down (void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _cb_clear_click (void *data, Evas_Object *obj, + const char *emission, const char *source); +static void _cb_go_click (void *data, Evas_Object *obj, + const char *emission, const char *source); static Eina_List *instances = NULL; static E_Module *path_mod = NULL; @@ -65,14 +69,17 @@ _cb_mouse_down, inst); evas_object_show(inst->o_base); - inst->o_loc = e_widget_label_add(gc->evas, D_("Location:")); - edje_object_part_swallow(inst->o_base, "e.swallow.location", inst->o_loc); - evas_object_show(inst->o_loc); + edje_object_part_text_set(inst->o_base, "e.text.title", D_("Location:")); inst->o_entry = e_widget_entry_add(gc->evas, &(inst->path), NULL, NULL, NULL); edje_object_part_swallow(inst->o_base, "e.swallow.entry", inst->o_entry); evas_object_show(inst->o_entry); + edje_object_signal_callback_add(inst->o_base, "e,clear,click", "", + _cb_clear_click, inst); + edje_object_signal_callback_add(inst->o_base, "e,go,click", "", + _cb_go_click, inst); + /* add hook to know when user changes entry */ evas_object_smart_callback_add(inst->o_entry, "key_down", _cb_key_down, inst); @@ -118,7 +125,6 @@ evas_object_event_callback_del(inst->o_base, EVAS_CALLBACK_MOUSE_DOWN, _cb_mouse_down); if (inst->o_event) evas_object_del(inst->o_event); - if (inst->o_loc) evas_object_del(inst->o_loc); if (inst->o_entry) evas_object_del(inst->o_entry); if (inst->o_base) evas_object_del(inst->o_base); if (inst->path) free(inst->path); @@ -301,19 +307,10 @@ _cb_key_down(void *data, Evas_Object *obj, void *event_info) { Evas_Event_Key_Down *ev; - Instance *inst; - Evas_Object *o_fm; - const char *p; ev = event_info; - if (strcmp(ev->keyname, "Return")) return; - - inst = data; - if ((!inst) || (!inst->tbar)) return; - p = e_widget_entry_text_get(inst->o_entry); - o_fm = e_toolbar_fm2_get(inst->tbar); - if (!o_fm) return; - e_fm2_path_set(o_fm, p, "/"); + if (!strcmp(ev->keyname, "Return")) + _cb_go_click(data, obj, NULL, NULL); } static void @@ -335,3 +332,30 @@ e_menu_activate_mouse(mn, zone, x, y, 1, 1, E_MENU_POP_DIRECTION_DOWN, ev->timestamp); } + +static void +_cb_clear_click(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + Instance *inst; + + inst = data; + if (!inst) return; + + e_widget_entry_clear(inst->o_entry); +} + +static void +_cb_go_click(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + Instance *inst; + Evas_Object *o_fm; + const char *p; + + inst = data; + if (!inst || !inst->tbar) return; + o_fm = e_toolbar_fm2_get(inst->tbar); + if (!o_fm) return; + + p = e_widget_entry_text_get(inst->o_entry); + e_fm2_path_set(o_fm, p, "/"); +} Index: E-MODULES-EXTRA/efm_path/Makefile.am =================================================================== --- E-MODULES-EXTRA/efm_path/Makefile.am (revision 40597) +++ E-MODULES-EXTRA/efm_path/Makefile.am (working copy) @@ -6,7 +6,7 @@ SUBDIRS = src po EDJE_FLAGS = -v \ - -id $(top_srcdir) + -id $(top_srcdir)/images filesdir = $(datadir) files_DATA = \
Index: E-MODULES-EXTRA/efm_path/e-module-efm_path.edc =================================================================== --- E-MODULES-EXTRA/efm_path/e-module-efm_path.edc (revision 40597) +++ E-MODULES-EXTRA/efm_path/e-module-efm_path.edc (working copy) @@ -1,6 +1,12 @@ images { image: "entry.png" COMP; + image: "bt_base1.png" COMP; + image: "bt_base2.png" COMP; + image: "clear.png" COMP; + image: "go.png" COMP; + image: "bt_hilight.png" COMP; + image: "bt_shine.png" COMP; } collections @@ -41,22 +47,139 @@ color: 255 255 255 0; } } - part + + // Clear button + part { - name: "e.swallow.location"; - type: SWALLOW; - description + name: "bg_clear"; + type: IMAGE; + mouse_events: 1; + repeat_events: 1; + description + { + state: "default" 0.0; + align: 0.0 0.5; + rel1.to: "base"; + rel2 + { + relative: 0.0 1.0; + to: "base"; + } + max: 28 28; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + image + { + normal: "bt_base2.png"; + border: 7 7 7 7; + } + } + description + { + state: "down" 0.0; + inherit: "default" 0.0; + image.normal: "bt_base1.png"; + } + } + part + { + name: "img_clear"; + type: IMAGE; + mouse_events: 0; + description { state: "default" 0.0; - align: 0.0 0.5; - rel1.to: "base"; + max: 18 18; + rel1 + { + offset: 7 7; + to: "bg_clear"; + } + rel2 + { + offset: -8 -8; + to: "bg_clear"; + } + image.normal: "clear.png"; + } + } + part + { + name: "fg1_clear"; + type: IMAGE; + mouse_events: 1; + repeat_events: 1; + description + { + state: "default" 0.0; + rel1.to: "bg_clear"; rel2 + { + relative: 1.0 0.5; + to: "bg_clear"; + } + image { - relative: 0.2 1.0; - to: "base"; + normal: "bt_hilight.png"; + border: 7 7 7 0; } } } + part + { + name: "fg2_clear"; + type: IMAGE; + mouse_events: 1; + repeat_events: 1; + description + { + state: "default" 0.0; + rel1.to: "bg_clear"; + rel2.to: "bg_clear"; + image + { + normal: "bt_shine.png"; + border: 7 7 7 7; + } + } + } + + // Location text label + part + { + name: "e.text.title"; + type: TEXT; + mouse_events: 0; + scale: 1; + description + { + state: "default" 0.0; + visible: 1; + align: 0.0 0.5; + rel1 + { + relative: 1.0 0.0; + to_x: "bg_clear"; + to_y: "base"; + } + rel2 + { + relative: 0.0 1.0; + to_x: "e.swallow.entry"; + to_y: "base"; + } + color: 0 0 0 255; + text + { + font: "Sans"; + size: 10; + min: 1 1; + max: 1 1; + align: 0.0 0.5; + } + } + } + // Path entry part { name: "e.swallow.entry"; @@ -67,11 +190,163 @@ rel1 { relative: 1.0 0.0; - to_x: "e.swallow.location"; + to_x: "e.text.title"; + to_y: "base"; } - rel2.to: "base"; + rel2 + { + relative: 0.0 1.0; + to_x: "bg_go"; + to_y: "base"; + } } } + + // Go button + part + { + name: "bg_go"; + type: IMAGE; + mouse_events: 1; + repeat_events: 1; + description + { + state: "default" 0.0; + align: 1.0 0.5; + rel1 + { + relative: 1.0 0.0; + to: "base"; + } + rel2.to: "base"; + max: 28 28; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + image + { + normal: "bt_base2.png"; + border: 7 7 7 7; + } + } + description + { + state: "down" 0.0; + inherit: "default" 0.0; + image.normal: "bt_base1.png"; + } + } + part + { + name: "img_go"; + type: IMAGE; + mouse_events: 0; + description + { + state: "default" 0.0; + max: 18 18; + rel1 + { + offset: 7 7; + to: "bg_go"; + } + rel2 + { + offset: -8 -8; + to: "bg_go"; + } + image.normal: "go.png"; + } + } + part + { + name: "fg1_go"; + type: IMAGE; + mouse_events: 1; + repeat_events: 1; + description + { + state: "default" 0.0; + rel1.to: "bg_go"; + rel2 + { + relative: 1.0 0.5; + to: "bg_go"; + } + image + { + normal: "bt_hilight.png"; + border: 7 7 7 0; + } + } + } + part + { + name: "fg2_go"; + type: IMAGE; + mouse_events: 1; + repeat_events: 1; + description + { + state: "default" 0.0; + rel1.to: "bg_go"; + rel2.to: "bg_go"; + image + { + normal: "bt_shine.png"; + border: 7 7 7 7; + } + } + } } + + programs + { + program + { + name: "clear_down"; + signal: "mouse,down,1"; + source: "bg_clear"; + action: STATE_SET "down" 0.0; + target: "bg_clear"; + } + program + { + name: "clear_up"; + signal: "mouse,up,1"; + source: "bg_clear"; + action: STATE_SET "default" 0.0; + target: "bg_clear"; + } + program + { + name: "clear_click"; + signal: "mouse,clicked,1"; + source: "bg_clear"; + action: SIGNAL_EMIT "e,clear,click" ""; + } + program + { + name: "go_down"; + signal: "mouse,down,1"; + source: "bg_go"; + action: STATE_SET "down" 0.0; + target: "bg_go"; + } + program + { + name: "go_up"; + signal: "mouse,up,1"; + source: "bg_go"; + action: STATE_SET "default" 0.0; + target: "bg_go"; + } + program + { + name: "go_click"; + signal: "mouse,clicked,1"; + source: "bg_go"; + action: SIGNAL_EMIT "e,go,click" ""; + } + } } } Index: E-MODULES-EXTRA/efm_path/src/e_mod_main.c =================================================================== --- E-MODULES-EXTRA/efm_path/src/e_mod_main.c (revision 40597) +++ E-MODULES-EXTRA/efm_path/src/e_mod_main.c (working copy) @@ -5,7 +5,7 @@ struct _Instance { E_Gadcon_Client *gcc; - Evas_Object *o_entry, *o_base, *o_loc, *o_event; + Evas_Object *o_entry, *o_base, *o_event; E_Toolbar *tbar; char *path; }; @@ -34,6 +34,10 @@ void *event_info); static void _cb_mouse_down (void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _cb_clear_click (void *data, Evas_Object *obj, + const char *emission, const char *source); +static void _cb_go_click (void *data, Evas_Object *obj, + const char *emission, const char *source); static Eina_List *instances = NULL; static E_Module *path_mod = NULL; @@ -65,14 +69,17 @@ _cb_mouse_down, inst); evas_object_show(inst->o_base); - inst->o_loc = e_widget_label_add(gc->evas, D_("Location:")); - edje_object_part_swallow(inst->o_base, "e.swallow.location", inst->o_loc); - evas_object_show(inst->o_loc); + edje_object_part_text_set(inst->o_base, "e.text.title", D_("Location:")); inst->o_entry = e_widget_entry_add(gc->evas, &(inst->path), NULL, NULL, NULL); edje_object_part_swallow(inst->o_base, "e.swallow.entry", inst->o_entry); evas_object_show(inst->o_entry); + edje_object_signal_callback_add(inst->o_base, "e,clear,click", "", + _cb_clear_click, inst); + edje_object_signal_callback_add(inst->o_base, "e,go,click", "", + _cb_go_click, inst); + /* add hook to know when user changes entry */ evas_object_smart_callback_add(inst->o_entry, "key_down", _cb_key_down, inst); @@ -118,7 +125,6 @@ evas_object_event_callback_del(inst->o_base, EVAS_CALLBACK_MOUSE_DOWN, _cb_mouse_down); if (inst->o_event) evas_object_del(inst->o_event); - if (inst->o_loc) evas_object_del(inst->o_loc); if (inst->o_entry) evas_object_del(inst->o_entry); if (inst->o_base) evas_object_del(inst->o_base); if (inst->path) free(inst->path); @@ -301,19 +307,10 @@ _cb_key_down(void *data, Evas_Object *obj, void *event_info) { Evas_Event_Key_Down *ev; - Instance *inst; - Evas_Object *o_fm; - const char *p; ev = event_info; - if (strcmp(ev->keyname, "Return")) return; - - inst = data; - if ((!inst) || (!inst->tbar)) return; - p = e_widget_entry_text_get(inst->o_entry); - o_fm = e_toolbar_fm2_get(inst->tbar); - if (!o_fm) return; - e_fm2_path_set(o_fm, p, "/"); + if (!strcmp(ev->keyname, "Return")) + _cb_go_click(data, obj, NULL, NULL); } static void @@ -335,3 +332,30 @@ e_menu_activate_mouse(mn, zone, x, y, 1, 1, E_MENU_POP_DIRECTION_DOWN, ev->timestamp); } + +static void +_cb_clear_click(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + Instance *inst; + + inst = data; + if (!inst) return; + + e_widget_entry_clear(inst->o_entry); +} + +static void +_cb_go_click(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + Instance *inst; + Evas_Object *o_fm; + const char *p; + + inst = data; + if (!inst || !inst->tbar) return; + o_fm = e_toolbar_fm2_get(inst->tbar); + if (!o_fm) return; + + p = e_widget_entry_text_get(inst->o_entry); + e_fm2_path_set(o_fm, p, "/"); +} Index: E-MODULES-EXTRA/efm_path/Makefile.am =================================================================== --- E-MODULES-EXTRA/efm_path/Makefile.am (revision 40597) +++ E-MODULES-EXTRA/efm_path/Makefile.am (working copy) @@ -6,7 +6,7 @@ SUBDIRS = src po EDJE_FLAGS = -v \ - -id $(top_srcdir) + -id $(top_srcdir)/images filesdir = $(datadir) files_DATA = \
0008-patch-efm-path-look.tar.bz2
Description: application/tbz
------------------------------------------------------------------------------ Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects
_______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel