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 = \
------------------------------------------------------------------------------
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