Work on a combo
This commit is contained in:
parent
8815f3c6f6
commit
ead2822bfe
@ -4,3 +4,4 @@
|
|||||||
-> finish interface
|
-> finish interface
|
||||||
-> more flexible typebuf
|
-> more flexible typebuf
|
||||||
-> more configuration options (speed and drive choice)
|
-> more configuration options (speed and drive choice)
|
||||||
|
-> fix combo theme
|
||||||
|
@ -14,4 +14,5 @@ collections {
|
|||||||
#include "groups/check.edc"
|
#include "groups/check.edc"
|
||||||
#include "groups/burn_image.edc"
|
#include "groups/burn_image.edc"
|
||||||
#include "groups/entry.edc"
|
#include "groups/entry.edc"
|
||||||
|
#include "groups/combo.edc"
|
||||||
}
|
}
|
||||||
|
267
experimental/ecdb/trunk/data/themes/default/groups/combo.edc
Normal file
267
experimental/ecdb/trunk/data/themes/default/groups/combo.edc
Normal file
@ -0,0 +1,267 @@
|
|||||||
|
/* vim: set sw=3 ts=3 sts=3 expandtab: */
|
||||||
|
group {
|
||||||
|
name: "ecdb/combo/background";
|
||||||
|
|
||||||
|
parts {
|
||||||
|
part {
|
||||||
|
name: "base";
|
||||||
|
type: RECT;
|
||||||
|
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
rel2 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: -1 -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
description {
|
||||||
|
state: "active" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
color: 255 255 255 128;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
programs {
|
||||||
|
program {
|
||||||
|
name: "set_active";
|
||||||
|
signal: "ecdb,combo,back,show";
|
||||||
|
source: "ecbd";
|
||||||
|
action: STATE_SET "active" 0.0;
|
||||||
|
target: "base";
|
||||||
|
}
|
||||||
|
|
||||||
|
program {
|
||||||
|
name: "set_default";
|
||||||
|
signal: "ecdb,combo,back,hide";
|
||||||
|
source: "ecdb";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
target: "base";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
group {
|
||||||
|
name: "ecdb/combo";
|
||||||
|
|
||||||
|
parts {
|
||||||
|
part {
|
||||||
|
name: "base";
|
||||||
|
type: IMAGE;
|
||||||
|
mouse_events: 0;
|
||||||
|
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
color: 255 255 255 178;
|
||||||
|
min: 0 24;
|
||||||
|
|
||||||
|
image {
|
||||||
|
normal: "button_base.png";
|
||||||
|
border: 7 7 7 7;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
part {
|
||||||
|
name: "focus_clip";
|
||||||
|
type: RECT;
|
||||||
|
mouse_events: 0;
|
||||||
|
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
|
||||||
|
rel1 {
|
||||||
|
to: "combo_button";
|
||||||
|
}
|
||||||
|
|
||||||
|
rel2 {
|
||||||
|
to: "combo_button";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
description {
|
||||||
|
state: "clicked" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
color: 255 255 255 255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
part {
|
||||||
|
name: "focus";
|
||||||
|
type: IMAGE;
|
||||||
|
mouse_events: 0;
|
||||||
|
clip_to: "focus_clip";
|
||||||
|
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
|
||||||
|
rel1 {
|
||||||
|
to: "combo_button";
|
||||||
|
}
|
||||||
|
|
||||||
|
rel2 {
|
||||||
|
to: "combo_button";
|
||||||
|
}
|
||||||
|
|
||||||
|
image {
|
||||||
|
normal: "combobox_focus.png";
|
||||||
|
border: 7 7 7 7;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
part {
|
||||||
|
name: "combo_button";
|
||||||
|
type: IMAGE;
|
||||||
|
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
min: 0 22;
|
||||||
|
|
||||||
|
rel1 {
|
||||||
|
to: "base";
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: 3 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
rel2 {
|
||||||
|
to: "base";
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -4 -3;
|
||||||
|
}
|
||||||
|
|
||||||
|
image {
|
||||||
|
normal: "combobox_button.png";
|
||||||
|
border: 7 23 7 7;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
description {
|
||||||
|
state: "clicked" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
|
||||||
|
image {
|
||||||
|
normal: "combobox_button_clicked.png";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
description {
|
||||||
|
state: "disabled" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
|
||||||
|
image {
|
||||||
|
normal: "combobox_button_disabled.png";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
part {
|
||||||
|
name: "combo_arrows";
|
||||||
|
type: IMAGE;
|
||||||
|
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
min: 9 13;
|
||||||
|
max: 9 13;
|
||||||
|
align: 1.0 0.5;
|
||||||
|
|
||||||
|
rel1 {
|
||||||
|
to: "combo_button";
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -11 -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
image {
|
||||||
|
normal: "combo_arrow.png";
|
||||||
|
}
|
||||||
|
|
||||||
|
fill {
|
||||||
|
smooth: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
programs {
|
||||||
|
program {
|
||||||
|
name: "clicked";
|
||||||
|
action: STATE_SET "clicked" 0.0;
|
||||||
|
signal: "mouse,down,1";
|
||||||
|
source: "*";
|
||||||
|
target: "combo_button";
|
||||||
|
}
|
||||||
|
|
||||||
|
program {
|
||||||
|
name: "focus_in,mouse";
|
||||||
|
signal: "mouse,down,1";
|
||||||
|
action: STATE_SET "clicked" 0.0;
|
||||||
|
source: "*";
|
||||||
|
target: "focus_clip";
|
||||||
|
transition: DECELERATE 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
program {
|
||||||
|
name: "focus_in,ecdb";
|
||||||
|
signal: "ecdb,focus,in";
|
||||||
|
action: STATE_SET "clicked" 0.0;
|
||||||
|
source: "*";
|
||||||
|
target: "focus_clip";
|
||||||
|
transition: DECELERATE 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
program {
|
||||||
|
name: "unclick1";
|
||||||
|
signal: "mouse,clicked,1";
|
||||||
|
source: "*";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
target: "combo_button";
|
||||||
|
}
|
||||||
|
|
||||||
|
program {
|
||||||
|
name: "unclick2";
|
||||||
|
signal: "mouse,up,1";
|
||||||
|
source: "*";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
target: "combo_button";
|
||||||
|
}
|
||||||
|
|
||||||
|
program {
|
||||||
|
name: "focus_out";
|
||||||
|
signal: "ecdb,focus,out";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
source: "ecdb";
|
||||||
|
target: "focus_clip";
|
||||||
|
transition: DECELERATE 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
program {
|
||||||
|
name: "disable";
|
||||||
|
signal: "ecdb,disable";
|
||||||
|
action: STATE_SET "disabled" 0.0;
|
||||||
|
source: "ecdb";
|
||||||
|
target: "combo_button";
|
||||||
|
}
|
||||||
|
|
||||||
|
program {
|
||||||
|
name: "enable";
|
||||||
|
signal: "ecdb,enable";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
source: "ecdb";
|
||||||
|
target: "combo_button";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -120,6 +120,28 @@ group {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
part {
|
||||||
|
name: "ecdb/erase/drive";
|
||||||
|
type: SWALLOW;
|
||||||
|
repeat_events: 1;
|
||||||
|
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
|
||||||
|
rel1 {
|
||||||
|
to: "ecdb/erase/speed";
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: 0 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
rel2 {
|
||||||
|
to: "ecdb/erase/speed";
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: 0 30;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
part {
|
part {
|
||||||
name: "progress_outline";
|
name: "progress_outline";
|
||||||
type: IMAGE;
|
type: IMAGE;
|
||||||
|
Binary file not shown.
After Width: | Height: | Size: 467 B |
Binary file not shown.
After Width: | Height: | Size: 1.0 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.0 KiB |
Binary file not shown.
After Width: | Height: | Size: 996 B |
Binary file not shown.
After Width: | Height: | Size: 302 B |
@ -20,4 +20,9 @@ images {
|
|||||||
image: "button_disabled.png" COMP;
|
image: "button_disabled.png" COMP;
|
||||||
image: "entry.png" COMP;
|
image: "entry.png" COMP;
|
||||||
image: "entry_focus.png" COMP;
|
image: "entry_focus.png" COMP;
|
||||||
|
image: "combobox_focus.png" COMP;
|
||||||
|
image: "combobox_button.png" COMP;
|
||||||
|
image: "combobox_button_clicked.png" COMP;
|
||||||
|
image: "combobox_button_disabled.png" COMP;
|
||||||
|
image: "combo_arrow.png" COMP;
|
||||||
}
|
}
|
||||||
|
@ -733,8 +733,10 @@ ecdb_erase_page_show(void)
|
|||||||
|
|
||||||
if (!swallow)
|
if (!swallow)
|
||||||
{
|
{
|
||||||
Evas_Object *b;
|
Evas_Object *b, *d;
|
||||||
Evas_Coord x, y, w, h;
|
Evas_Coord x, y, w, h;
|
||||||
|
Eina_List *l;
|
||||||
|
Ecdb_Drive_Info *drive;
|
||||||
|
|
||||||
swallow = edje_object_add(ecore_evas_get(em->main_win_ee));
|
swallow = edje_object_add(ecore_evas_get(em->main_win_ee));
|
||||||
edje_object_file_set(swallow, em->theme_path, "ecdb/erase_page");
|
edje_object_file_set(swallow, em->theme_path, "ecdb/erase_page");
|
||||||
@ -767,6 +769,17 @@ ecdb_erase_page_show(void)
|
|||||||
b = ecdb_check_add(swallow, "ecdb/erase/speed");
|
b = ecdb_check_add(swallow, "ecdb/erase/speed");
|
||||||
ecdb_check_label_set(b, "Quick Erase");
|
ecdb_check_label_set(b, "Quick Erase");
|
||||||
evas_object_show(b);
|
evas_object_show(b);
|
||||||
|
|
||||||
|
b = ecdb_combo_add(swallow, "ecdb/erase/drive");
|
||||||
|
ecdb_combo_header_set(b, "Drive");
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(em->drives, l, drive)
|
||||||
|
{
|
||||||
|
d = ecdb_button_add(swallow, NULL);
|
||||||
|
ecdb_button_label_set(d, drive->location);
|
||||||
|
ecdb_combo_append(b, d);
|
||||||
|
evas_object_show(d);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (edje_object_part_swallow_get(gui, "action_area") != swallow)
|
else if (edje_object_part_swallow_get(gui, "action_area") != swallow)
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
/* vim: set sw=3 ts=3 sts=3 expandtab: */
|
/* vim: set sw=3 ts=3 sts=3 expandtab: */
|
||||||
#include "ecdb.h"
|
#include "ecdb.h"
|
||||||
|
|
||||||
static char *ecdb_entry_markup_to_text(const char *mkup);
|
|
||||||
static char *_str_append(char *str, const char *txt, int *len, int *alloc);
|
|
||||||
|
|
||||||
Evas_Object *
|
Evas_Object *
|
||||||
ecdb_widget_add(Evas_Object *parent, const char *name)
|
ecdb_widget_add(Evas_Object *parent, const char *name)
|
||||||
{
|
{
|
||||||
@ -11,15 +8,28 @@ ecdb_widget_add(Evas_Object *parent, const char *name)
|
|||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
|
|
||||||
o = edje_object_add(evas_object_evas_get(parent));
|
o = edje_object_add(evas_object_evas_get(parent));
|
||||||
evas_object_name_set(o, name);
|
|
||||||
edje_object_part_geometry_get(parent, name, &x, &y, &w, &h);
|
if (name)
|
||||||
evas_object_move(o, x, y);
|
{
|
||||||
evas_object_resize(o, w, h);
|
evas_object_name_set(o, name);
|
||||||
edje_object_part_swallow(parent, name, o);
|
edje_object_part_geometry_get(parent, name, &x, &y, &w, &h);
|
||||||
|
evas_object_move(o, x, y);
|
||||||
|
evas_object_resize(o, w, h);
|
||||||
|
edje_object_part_swallow(parent, name, o);
|
||||||
|
}
|
||||||
|
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/************************** BUTTON ******************************************/
|
||||||
|
|
||||||
|
void
|
||||||
|
_button_click_cb_call(void *data, Evas_Object *obj, const char *emission,
|
||||||
|
const char *source)
|
||||||
|
{
|
||||||
|
evas_object_smart_callback_call(obj, "clicked", NULL);
|
||||||
|
}
|
||||||
|
|
||||||
Evas_Object *
|
Evas_Object *
|
||||||
ecdb_button_add(Evas_Object *parent, const char *name)
|
ecdb_button_add(Evas_Object *parent, const char *name)
|
||||||
{
|
{
|
||||||
@ -27,6 +37,8 @@ ecdb_button_add(Evas_Object *parent, const char *name)
|
|||||||
|
|
||||||
b = ecdb_widget_add(parent, name);
|
b = ecdb_widget_add(parent, name);
|
||||||
edje_object_file_set(b, em->theme_path, "ecdb/button");
|
edje_object_file_set(b, em->theme_path, "ecdb/button");
|
||||||
|
edje_object_signal_callback_add(b, "ecdb,button,clicked", "ecdb",
|
||||||
|
_button_click_cb_call, b);
|
||||||
|
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
@ -47,6 +59,8 @@ ecdb_button_icon_set(Evas_Object *b, const char *group)
|
|||||||
evas_object_show(icon);
|
evas_object_show(icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/************************* CHECK *********************************************/
|
||||||
|
|
||||||
Evas_Object *
|
Evas_Object *
|
||||||
ecdb_check_add(Evas_Object *parent, const char *name)
|
ecdb_check_add(Evas_Object *parent, const char *name)
|
||||||
{
|
{
|
||||||
@ -84,34 +98,32 @@ ecdb_check_state_set(Evas_Object *c, int state)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Evas_Object *
|
/************************** ENTRY *******************************************/
|
||||||
ecdb_entry_add(Evas_Object *parent, const char *name)
|
|
||||||
{
|
|
||||||
Evas_Object *e;
|
|
||||||
|
|
||||||
e = ecdb_widget_add(parent, name);
|
|
||||||
edje_object_file_set(e, em->theme_path, "ecdb/entry");
|
|
||||||
em->dnd_candidates = eina_list_append(em->dnd_candidates, e);
|
|
||||||
evas_object_data_set(e, "dnd_call_func", ecdb_dnd_entry_dnd_set);
|
|
||||||
|
|
||||||
return e;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ecdb_entry_text_set(Evas_Object *e, const char *text)
|
|
||||||
{
|
|
||||||
edje_object_part_text_set(e, "ecdb.text", text);
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
ecdb_entry_text_get(Evas_Object *e)
|
|
||||||
{
|
|
||||||
return ecdb_entry_markup_to_text(edje_object_part_text_get(e, "ecdb.text"));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Shamelessly stolen from Elementary... */
|
/* Shamelessly stolen from Elementary... */
|
||||||
static char *
|
static char *
|
||||||
ecdb_entry_markup_to_text(const char *mkup)
|
_entry_str_append(char *str, const char *txt, int *len, int *alloc)
|
||||||
|
{
|
||||||
|
int txt_len = strlen(txt);
|
||||||
|
if (txt_len <= 0) return str;
|
||||||
|
if ((*len + txt_len) >= *alloc)
|
||||||
|
{
|
||||||
|
char *str2;
|
||||||
|
int alloc2;
|
||||||
|
|
||||||
|
alloc2 = *alloc + txt_len + 128;
|
||||||
|
str2 = realloc(str, alloc2);
|
||||||
|
if (!str2) return str;
|
||||||
|
*alloc = alloc2;
|
||||||
|
str = str2;
|
||||||
|
}
|
||||||
|
strcpy(str + *len, txt);
|
||||||
|
*len += txt_len;
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
_entry_markup_to_text(const char *mkup)
|
||||||
{
|
{
|
||||||
char *str = NULL;
|
char *str = NULL;
|
||||||
int str_len = 0, str_alloc = 0;
|
int str_len = 0, str_alloc = 0;
|
||||||
@ -142,13 +154,17 @@ ecdb_entry_markup_to_text(const char *mkup)
|
|||||||
str = _str_append(str, "\n", &str_len, &str_alloc);
|
str = _str_append(str, "\n", &str_len, &str_alloc);
|
||||||
*/
|
*/
|
||||||
if (!strcmp(ttag, "\n"))
|
if (!strcmp(ttag, "\n"))
|
||||||
str = _str_append(str, "\n", &str_len, &str_alloc);
|
str = _entry_str_append(str, "\n", &str_len,
|
||||||
|
&str_alloc);
|
||||||
else if (!strcmp(ttag, "\\n"))
|
else if (!strcmp(ttag, "\\n"))
|
||||||
str = _str_append(str, "\n", &str_len, &str_alloc);
|
str = _entry_str_append(str, "\n", &str_len,
|
||||||
|
&str_alloc);
|
||||||
else if (!strcmp(ttag, "\t"))
|
else if (!strcmp(ttag, "\t"))
|
||||||
str = _str_append(str, "\t", &str_len, &str_alloc);
|
str = _entry_str_append(str, "\t", &str_len,
|
||||||
|
&str_alloc);
|
||||||
else if (!strcmp(ttag, "\\t"))
|
else if (!strcmp(ttag, "\\t"))
|
||||||
str = _str_append(str, "\t", &str_len, &str_alloc);
|
str = _entry_str_append(str, "\t", &str_len,
|
||||||
|
&str_alloc);
|
||||||
free(ttag);
|
free(ttag);
|
||||||
}
|
}
|
||||||
tag_start = tag_end = NULL;
|
tag_start = tag_end = NULL;
|
||||||
@ -163,7 +179,8 @@ ecdb_entry_markup_to_text(const char *mkup)
|
|||||||
ts[esc_end - esc_start] = 0;
|
ts[esc_end - esc_start] = 0;
|
||||||
esc = evas_textblock_escape_string_get(ts);
|
esc = evas_textblock_escape_string_get(ts);
|
||||||
if (esc)
|
if (esc)
|
||||||
str = _str_append(str, esc, &str_len, &str_alloc);
|
str = _entry_str_append(str, esc, &str_len,
|
||||||
|
&str_alloc);
|
||||||
free(ts);
|
free(ts);
|
||||||
}
|
}
|
||||||
esc_start = esc_end = NULL;
|
esc_start = esc_end = NULL;
|
||||||
@ -175,7 +192,7 @@ ecdb_entry_markup_to_text(const char *mkup)
|
|||||||
{
|
{
|
||||||
strncpy(ts, s, p - s);
|
strncpy(ts, s, p - s);
|
||||||
ts[p - s] = 0;
|
ts[p - s] = 0;
|
||||||
str = _str_append(str, ts, &str_len, &str_alloc);
|
str = _entry_str_append(str, ts, &str_len, &str_alloc);
|
||||||
free(ts);
|
free(ts);
|
||||||
}
|
}
|
||||||
s = NULL;
|
s = NULL;
|
||||||
@ -194,7 +211,7 @@ ecdb_entry_markup_to_text(const char *mkup)
|
|||||||
{
|
{
|
||||||
strncpy(ts, s, p - s);
|
strncpy(ts, s, p - s);
|
||||||
ts[p - s] = 0;
|
ts[p - s] = 0;
|
||||||
str = _str_append(str, ts, &str_len, &str_alloc);
|
str = _entry_str_append(str, ts, &str_len, &str_alloc);
|
||||||
free(ts);
|
free(ts);
|
||||||
}
|
}
|
||||||
s = NULL;
|
s = NULL;
|
||||||
@ -219,7 +236,7 @@ ecdb_entry_markup_to_text(const char *mkup)
|
|||||||
{
|
{
|
||||||
strncpy(ts, s, p - s);
|
strncpy(ts, s, p - s);
|
||||||
ts[p - s] = 0;
|
ts[p - s] = 0;
|
||||||
str = _str_append(str, ts, &str_len, &str_alloc);
|
str = _entry_str_append(str, ts, &str_len, &str_alloc);
|
||||||
free(ts);
|
free(ts);
|
||||||
}
|
}
|
||||||
s = NULL;
|
s = NULL;
|
||||||
@ -238,23 +255,138 @@ ecdb_entry_markup_to_text(const char *mkup)
|
|||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
Evas_Object *
|
||||||
_str_append(char *str, const char *txt, int *len, int *alloc)
|
ecdb_entry_add(Evas_Object *parent, const char *name)
|
||||||
{
|
{
|
||||||
int txt_len = strlen(txt);
|
Evas_Object *e;
|
||||||
if (txt_len <= 0) return str;
|
|
||||||
if ((*len + txt_len) >= *alloc)
|
|
||||||
{
|
|
||||||
char *str2;
|
|
||||||
int alloc2;
|
|
||||||
|
|
||||||
alloc2 = *alloc + txt_len + 128;
|
e = ecdb_widget_add(parent, name);
|
||||||
str2 = realloc(str, alloc2);
|
edje_object_file_set(e, em->theme_path, "ecdb/entry");
|
||||||
if (!str2) return str;
|
em->dnd_candidates = eina_list_append(em->dnd_candidates, e);
|
||||||
*alloc = alloc2;
|
evas_object_data_set(e, "dnd_call_func", ecdb_dnd_entry_dnd_set);
|
||||||
str = str2;
|
|
||||||
}
|
return e;
|
||||||
strcpy(str + *len, txt);
|
|
||||||
*len += txt_len;
|
|
||||||
return str;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ecdb_entry_text_set(Evas_Object *e, const char *text)
|
||||||
|
{
|
||||||
|
edje_object_part_text_set(e, "ecdb.text", text);
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
ecdb_entry_text_get(Evas_Object *e)
|
||||||
|
{
|
||||||
|
return _entry_markup_to_text(edje_object_part_text_get(e, "ecdb.text"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************** COMBO ****************************************/
|
||||||
|
|
||||||
|
// Axis preferential -- for now vertical
|
||||||
|
const char *
|
||||||
|
_combo_best_location(Evas_Object *c)
|
||||||
|
{
|
||||||
|
int x, y, w, h;
|
||||||
|
int ww, wh;
|
||||||
|
|
||||||
|
ecore_evas_geometry_get(em->main_win_ee, NULL, NULL, &ww, &wh);
|
||||||
|
evas_object_geometry_get(c, &x, &y, &w, &h);
|
||||||
|
|
||||||
|
if ((w) > (ww - x - w))
|
||||||
|
{
|
||||||
|
return "top";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return "bottom";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_combo_resize(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||||
|
{
|
||||||
|
Evas_Object *c, *back;
|
||||||
|
int w, h;
|
||||||
|
|
||||||
|
// Deal with popup?
|
||||||
|
c = data;
|
||||||
|
back = evas_object_data_get(c, "back");
|
||||||
|
evas_object_move(back, 0, 0);
|
||||||
|
ecore_evas_geometry_get(em->main_win_ee, NULL, NULL, &w, &h);
|
||||||
|
evas_object_resize(back, w, h);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_combo_hide(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||||
|
{
|
||||||
|
ecdb_combo_collapse(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_combo_clicked(void *data, Evas_Object *obj, void *event_info)
|
||||||
|
{
|
||||||
|
ecdb_combo_collapse(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
Evas_Object *
|
||||||
|
ecdb_combo_add(Evas_Object *parent, const char *name)
|
||||||
|
{
|
||||||
|
Evas_Object *c, *back;
|
||||||
|
|
||||||
|
c = ecdb_widget_add(parent, name);
|
||||||
|
edje_object_file_set(c, em->theme_path, "ecdb/combo");
|
||||||
|
evas_object_event_callback_add(parent, EVAS_CALLBACK_RESIZE, _combo_resize,
|
||||||
|
c);
|
||||||
|
evas_object_event_callback_add(parent, EVAS_CALLBACK_HIDE, _combo_hide, c);
|
||||||
|
evas_object_event_callback_add(parent, EVAS_CALLBACK_HIDE, _combo_hide, c);
|
||||||
|
|
||||||
|
back = edje_object_add(evas_object_evas_get(parent));
|
||||||
|
edje_object_file_set(back, em->theme_path, "ecdb/combo/background");
|
||||||
|
evas_object_data_set(c, "back", back);
|
||||||
|
evas_object_show(back);
|
||||||
|
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ecdb_combo_header_set(Evas_Object *c, const char *text)
|
||||||
|
{
|
||||||
|
edje_object_part_text_set(c, "ecdb.header", text);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ecdb_combo_append(Evas_Object *c, Evas_Object *o)
|
||||||
|
{
|
||||||
|
edje_object_part_box_append(c, "ecdb.box", o);
|
||||||
|
evas_object_smart_callback_add(o, "clicked", _combo_clicked, c);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ecdb_combo_expand(Evas_Object *c)
|
||||||
|
{
|
||||||
|
Evas_Object *back;
|
||||||
|
const char *location;
|
||||||
|
char buf[1024];
|
||||||
|
int w, h;
|
||||||
|
|
||||||
|
location = _combo_best_location(c);
|
||||||
|
snprintf(buf, sizeof(buf), "ecdb,combo,expand,%s", location);
|
||||||
|
edje_object_signal_emit(c, buf, "ecdb");
|
||||||
|
|
||||||
|
back = evas_object_data_get(c, "back");
|
||||||
|
evas_object_move(back, 0, 0);
|
||||||
|
ecore_evas_geometry_get(em->main_win_ee, NULL, NULL, &w, &h);
|
||||||
|
evas_object_resize(back, w, h);
|
||||||
|
edje_object_signal_emit(back, "ecdb,combo,back,show", "ecdb");
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ecdb_combo_collapse(Evas_Object *c)
|
||||||
|
{
|
||||||
|
Evas_Object *back;
|
||||||
|
|
||||||
|
back = evas_object_data_get(c, "back");
|
||||||
|
edje_object_signal_emit(back, "ecdb,combo,back,hide", "ecdb");
|
||||||
|
edje_object_signal_emit(c, "ecdb,combo,collapse", "ecdb");
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -16,4 +16,12 @@ Evas_Object *ecdb_entry_add(Evas_Object *parent, const char *name);
|
|||||||
void ecdb_entry_text_set(Evas_Object *e, const char *text);
|
void ecdb_entry_text_set(Evas_Object *e, const char *text);
|
||||||
char *ecdb_entry_text_get(Evas_Object *e);
|
char *ecdb_entry_text_get(Evas_Object *e);
|
||||||
|
|
||||||
|
// I am unsure about whether to use elementary here or not... It would be nice
|
||||||
|
Evas_Object *ecdb_combo_add(Evas_Object *parent, const char *name);
|
||||||
|
void ecdb_combo_header_set(Evas_Object *c, const char *text);
|
||||||
|
void ecdb_combo_append(Evas_Object *c, Evas_Object *o);
|
||||||
|
void ecdb_combo_expand(Evas_Object *c);
|
||||||
|
void ecdb_combo_collapse(Evas_Object *c);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user