sorry taking so late, but I thought somebody else applied your patch. Now in svn!
On Tue, May 12, 2009 at 8:28 AM, Sergey P. Semernin<sergey.semer...@gmail.com> wrote: > Hello, All! > > 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 = \ > > > WBR, Sergey. > > ------------------------------------------------------------------------------ > The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your > production scanning environment may not be a perfect world - but thanks to > Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 > Series Scanner you'll get full speed at 300 dpi even with all image > processing features enabled. http://p.sf.net/sfu/kodak-com > _______________________________________________ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > > -- Gustavo Sverzut Barbieri http://profusion.mobi embedded systems -------------------------------------- MSN: barbi...@gmail.com Skype: gsbarbieri Mobile: +55 (19) 9225-2202 ------------------------------------------------------------------------------ OpenSolaris 2009.06 is a cutting edge operating system for enterprises looking to deploy the next generation of Solaris that includes the latest innovations from Sun and the OpenSource community. Download a copy and enjoy capabilities such as Networking, Storage and Virtualization. Go to: http://p.sf.net/sfu/opensolaris-get _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel