Bundles / res / edje /

main.edc

#include "../../inc/view_defines.h"
#include "edc_defines.edc"

#define PART_DATA_BUTTON "part,main,data_button"
#define PART_SINK_BUTTON "part,main,sink_button"

#define IMAGE_BUTTON_DATA "../res/images/main/button1.png"
#define IMAGE_BUTTON_SINK "../res/images/main/button2.png"
#define IMAGE_BUTTON_SINK_PRESSED "../res/images/main/button2_pressed.png"
#define IMAGE_BUTTON_DATA_PRESSED "../res/images/main/button1_pressed.png"

#define PART_TOOLBAR_BTN(btn_text, part_name, pos) \
part {                                             \
	name: part_name;                               \
	type: RECT;                                    \
	description {                                  \
		state: STATE_DEFAULT 0.0;                  \
		rel1.relative: pos 0.0391;                 \
		rel2.relative: pos+0.5 0.1094;             \
		color: 34 125 207 255;                     \
	}                                              \
	description {                                  \
		state: STATE_PRESSED 0.0;                  \
		rel1.relative: pos 0.0391;                 \
		rel2.relative: pos+0.5 0.1094;             \
		color: 13 93 166 255;                      \
	}                                              \
}                                                  \
part {                                             \
	name: part_name##"_txt";                       \
	type: TEXT;                                    \
	repeat_events: 1;                              \
	description {                                  \
		state: STATE_DEFAULT 0.0;                  \
		rel1 {                                     \
			relative: 0.0 0.0;                     \
			to: part_name;                         \
		}                                          \
		rel2 {                                     \
			relative: 1.0 1.0;                     \
			to: part_name;                         \
		}                                          \
		text {                                     \
			font: "BreezeSans:style=Thin";         \
			size: 28;                              \
			text: btn_text;                        \
		}                                          \
	}                                              \
	description {                                  \
		state: STATE_PRESSED 0.0;                  \
		inherit: STATE_DEFAULT 0.0;                \
		text.font: "BreezeSans:style=Light";       \
	}                                              \
}                                                  \

#define PROGRAM_TOOLBAR(source_part, selected, unselected, signal_name) \
program {                                                               \
	signal: "mouse,clicked,1";                                          \
	source: source_part;                                                \
	script {                                                            \
		new state[256];                                                 \
		new Float:state_num;                                            \
		new buf[256];                                                   \
		snprintf(buf, 256, "%s_txt", selected);                         \
		new sel_txt = get_part_id(buf);                                 \
		snprintf(buf, 256, "%s_txt", unselected);                       \
		new unsel_txt = get_part_id(buf);                               \
		get_state(PART:selected, state, 256, state_num);                \
		if (!strncmp(STATE_DEFAULT, state, 256)) {                      \
			set_state(PART:selected, STATE_PRESSED, 0.0);               \
			set_state(PART:unselected, STATE_DEFAULT, 0.0);             \
			set_state(sel_txt, STATE_PRESSED, 0.0);                     \
			set_state(unsel_txt, STATE_DEFAULT, 0.0);                   \
			emit(signal_name, "");                                      \
		}                                                               \
	}                                                                   \
}                                                                       \

collections {
	group {
		name: GROUP_MAIN;

		images {
			image: IMAGE_BUTTON_DATA COMP;
			image: IMAGE_BUTTON_SINK COMP;
			image: IMAGE_BUTTON_SINK_PRESSED COMP;
			image: IMAGE_BUTTON_DATA_PRESSED COMP;
		}

		parts {
			part {
				type: SPACER;
				description {
					state: "default" 0.0;
					min: 720 1280;
					rel1.relative: 0.0 0.0;
					rel2.relative: 1.0 1.0;
				}
			}
			part {
				name: PART_VIEW;
				type: SWALLOW;
				description {
					state: "default" 0.0;
					rel1.relative: 0.0 0.0;
					rel2.relative: 1.0 1.0;
				}
			}

			PART_TOOLBAR_BTN("Data source", PART_DATA_BUTTON, 0.0)
			PART_TOOLBAR_BTN("Data sink", PART_SINK_BUTTON, 0.5)
		}

		programs {
			program {
				signal: "load";
				source: "";
				action: STATE_SET STATE_PRESSED 0.0;
				target: PART_DATA_BUTTON;
				target: PART_DATA_BUTTON"_txt";
			}

			PROGRAM_TOOLBAR(PART_DATA_BUTTON, PART_DATA_BUTTON, PART_SINK_BUTTON, SIGNAL_SWITCH_SOURCE_VIEW)
			PROGRAM_TOOLBAR(PART_SINK_BUTTON, PART_SINK_BUTTON, PART_DATA_BUTTON, SIGNAL_SWITCH_SINK_VIEW)
		}
	}
}