diff --git a/edje/.gitignore b/edje/.gitignore index d3d18389..73b171ab 100644 --- a/edje/.gitignore +++ b/edje/.gitignore @@ -14,6 +14,7 @@ /edje-entry /edje-focus /edje-multiseat +/edje-multiseat-custom-names /edje-multisense /edje-perspective /edje-signals-messages diff --git a/edje/Makefile.am b/edje/Makefile.am index 78365a46..2afacfc6 100644 --- a/edje/Makefile.am +++ b/edje/Makefile.am @@ -46,6 +46,7 @@ focus.edc \ lua_script.edc \ messages_echo.edc \ multiseat.edc \ +multiseat_custom_names.edc \ perspective.edc \ signals-messages.edc \ signalsBubble.edc \ @@ -146,6 +147,7 @@ edje-edit-part-box.c \ edje-entry.c \ edje-focus.c \ edje-multiseat.c \ +edje-multiseat-custom-names.c \ edje-multisense.c \ edje-perspective.c \ edje-signals-messages.c \ @@ -222,6 +224,7 @@ edje-edit-part-box \ edje-entry \ edje-focus \ edje-multiseat \ +edje-multiseat-custom-names \ edje-perspective \ edje-signals-messages \ edje-swallow \ diff --git a/unsorted/edje/edje-multiseat-custom-names.c b/unsorted/edje/edje-multiseat-custom-names.c new file mode 100644 index 00000000..7182d0c1 --- /dev/null +++ b/unsorted/edje/edje-multiseat-custom-names.c @@ -0,0 +1,150 @@ +/** + * Edje example demonstrating how to deal with part and objects focus. + * + * @verbatim + * edje_cc focus.edc && gcc -o edje-focus edje-focus.c `pkg-config --libs --cflags evas ecore ecore-evas edje` + * @endverbatim + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# define EINA_UNUSED +#endif + +#ifndef PACKAGE_DATA_DIR +#define PACKAGE_DATA_DIR "." +#endif + +#include +#include +#include + +#define WIDTH 400 +#define HEIGHT 400 + +static const char *GROUPNAME = "example/main"; +static const char *EDJE_FILE = PACKAGE_DATA_DIR"/multiseat_custom_names.edj"; + +static Efl_Input_Device *default_seat = NULL; +static Efl_Input_Device *secondary_seat = NULL; + +static void +_on_destroy(Ecore_Evas *ee EINA_UNUSED) +{ + ecore_main_loop_quit(); +} + +static void +_on_canvas_resize(Ecore_Evas *ee) +{ + Evas_Object *edje_obj; + int w, h; + + edje_obj = ecore_evas_data_get(ee, "edje_obj"); + + ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); + evas_object_resize(edje_obj, w, h); +} + +static void +_device_rename(Efl_Input_Device *dev) +{ + if (!default_seat) { + default_seat = dev; + efl_input_device_name_set(dev, "default"); + return; + } + + if (!secondary_seat) { + secondary_seat = dev; + efl_input_device_name_set(dev, "secondary"); + } +} + +static void +_device_added(void *data EINA_UNUSED, const Efl_Event *event) +{ + Efl_Input_Device *dev = event->info; + + if (efl_input_device_type_get(dev) != EFL_INPUT_DEVICE_CLASS_SEAT) + return; + _device_rename(dev); +} + +static void +_device_changed(void *data EINA_UNUSED, const Efl_Event *event) +{ + Efl_Input_Device *dev = event->info; + + if (dev == default_seat) + efl_input_device_name_set(dev, "default"); + else if (dev == secondary_seat) + efl_input_device_name_set(dev, "secondary"); +} + +int +main(int argc EINA_UNUSED, char *argv[] EINA_UNUSED) +{ + const Eina_List *devices, *l; + Efl_Input_Device *dev; + Evas_Object *edje_obj; + Ecore_Evas *ee; + Evas *evas; + + if (!ecore_evas_init()) + return EXIT_FAILURE; + + if (!edje_init()) + goto shutdown_ecore_evas; + + ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); + if (!ee) goto shutdown_edje; + + ecore_evas_callback_destroy_set(ee, _on_destroy); + ecore_evas_callback_resize_set(ee, _on_canvas_resize); + ecore_evas_title_set(ee, "Edje Focus Example"); + + evas = ecore_evas_get(ee); + + edje_obj = edje_object_add(evas); + + if (!edje_object_file_set(edje_obj, EDJE_FILE, GROUPNAME)) + printf("failed to set file %s.\n", EDJE_FILE); + + evas_object_move(edje_obj, 0, 0); + evas_object_resize(edje_obj, WIDTH, HEIGHT); + evas_object_show(edje_obj); + ecore_evas_data_set(ee, "edje_obj", edje_obj); + + devices = evas_device_list(evas, NULL); + EINA_LIST_FOREACH(devices, l, dev) + { + if (efl_input_device_type_get(dev) == EFL_INPUT_DEVICE_CLASS_SEAT) + _device_rename(dev); + } + efl_event_callback_add(evas, EFL_CANVAS_EVENT_DEVICE_ADDED, + _device_added, NULL); + efl_event_callback_add(evas, EFL_CANVAS_EVENT_DEVICE_CHANGED, + _device_changed, NULL); + + printf("Running example on evas engine %s\n", + ecore_evas_engine_name_get(ee)); + + ecore_evas_show(ee); + + ecore_main_loop_begin(); + + ecore_evas_free(ee); + ecore_evas_shutdown(); + edje_shutdown(); + + return EXIT_SUCCESS; + +shutdown_edje: + edje_shutdown(); +shutdown_ecore_evas: + ecore_evas_shutdown(); + + return EXIT_FAILURE; +} diff --git a/unsorted/edje/multiseat_custom_names.edc b/unsorted/edje/multiseat_custom_names.edc new file mode 100644 index 00000000..eb5c493a --- /dev/null +++ b/unsorted/edje/multiseat_custom_names.edc @@ -0,0 +1,175 @@ +collections { + + group { + name: "example/main"; + min: 400 400; + use_custom_seat_names: 1; + + parts { + part { + name: "bg"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + } + } + + part { + name: "title"; + type: TEXT; + mouse_events: 0; + description { + state: "default" 0.0; + color: 0 0 0 255; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "bg"; + } + rel2 { + relative: 1.0 0.2; + offset: -1 -1; + to: "bg"; + } + text { + text: "Multiseat System Names Example"; + size: 16; + font: "sans"; + min: 1 1; + } + } + } + + part { + name: "button_bg,1"; + type: RECT; + mouse_events: 1; + description { + state: "default" 0.0; + rel1.relative: 0.1 0.25; + rel2.relative: 0.45 0.8; + color: 200 200 200 255; + } + description { + state: "over,default" 0.0; + inherit: "default" 0.0; + color: 200 120 120 255; + } + description { + state: "over,secondary" 0.0; + inherit: "default" 0.0; + color: 120 120 200 255; + } + } + + part { + name: "button,1"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + to: "button_bg,1"; + offset: 10 10; + } + rel2 { + to: "button_bg,1"; + offset: -11 -11; + } + color: 200 200 200 255; + } + } + + part { + name: "button_bg,2"; + type: RECT; + mouse_events: 1; + description { + state: "default" 0.0; + rel1.relative: 0.55 0.25; + rel2.relative: 0.9 0.8; + color: 200 200 200 255; + } + description { + state: "over,default" 0.0; + inherit: "default" 0.0; + color: 200 120 120 255; + } + description { + state: "over,secondary" 0.0; + inherit: "default" 0.0; + color: 120 120 200 255; + } + } + + part { + name: "button,2"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + to: "button_bg,2"; + offset: 10 10; + } + rel2 { + to: "button_bg,2"; + offset: -11 -11; + } + color: 200 200 200 255; + } + } + } + + programs { + program { + name: "button,1,over,default"; + signal: "mouse,in,default"; + source: "button_bg,1"; + action: STATE_SET "over,default" 0.0; + target: "button_bg,1"; + } + + program { + name: "button,1,over,secondary"; + signal: "mouse,in,secondary"; + source: "button_bg,1"; + action: STATE_SET "over,secondary" 0.0; + target: "button_bg,1"; + } + + program { + name: "button,1,out"; + signal: "mouse,out"; + source: "button_bg,1"; + action: STATE_SET "default" 0.0; + target: "button_bg,1"; + } + + program { + name: "button,2,over,default"; + signal: "mouse,in,default"; + source: "button_bg,2"; + action: STATE_SET "over,default" 0.0; + target: "button_bg,2"; + } + + program { + name: "button,2,over,secondary"; + signal: "mouse,in,secondary"; + source: "button_bg,2"; + action: STATE_SET "over,secondary" 0.0; + target: "button_bg,2"; + } + + program { + name: "button,2,out"; + signal: "mouse,out"; + source: "button_bg,2"; + action: STATE_SET "default" 0.0; + target: "button_bg,2"; + } + } + } +}