#! /usr/bin/env ruby # -*- coding: UTF-8 -*- # require 'efl/eina' require 'efl/evas' require 'efl/ecore' require 'efl/ecore_evas' require 'efl/edje' # Efl::Eina::init Efl::Evas::init Efl::Ecore::init Efl::EcoreEvas::init Efl::Edje::init # WIDTH=320 HEIGHT=240 EDC_FILE=File.join '/tmp','edje_test.edc' EDJE_FILE=File.join '/tmp','edje_test.edj' # if not File.exists? EDJE_FILE File.open(EDC_FILE,'w') do |f| f << DATA.read end system "edje_cc #{EDC_FILE}" end # def create_my_group canvas, txt #edje = edje_object_add(canvas); edje = canvas.edje_object_add if not edje.file_set EDJE_FILE, "my_group" puts "unable to open #{EDJE_FILE}" exit 1 end edje.part_text_set "text", txt unless txt.nil? edje.move 0, 0 edje.resize WIDTH, HEIGHT edje.show edje end # txt = ( ARGV.length>0 ? ARGV[0] : nil ) # window = Efl::EcoreEvas::REcoreEvas.new { |w| w.resize WIDTH, HEIGHT } # canvas = window.get edje = create_my_group canvas, txt window.show # Efl::Ecore.main_loop_begin # edje.free window.free # __END__ // compile: edje_cc edje_example.edc collections { group { name: "my_group"; // must be the same as in edje_example.c parts { part { name: "background"; type: RECT; // plain boring rectangle mouse_events: 0; // we don't need any mouse event on the background // just one state "default" description { state: "default" 0.0; // must always exist color: 255 255 255 255; // white // define part coordinates: rel1 { // top-left point at (0, 0) [WIDTH * 0 + 0, HEIGHT * 0 + 0] relative: 0.0 0.0; offset: 0 0; } rel2 { // bottom-right point at (WIDTH * 1.0 - 1, HEIGHT * 1.0 - 1) relative: 1.0 1.0; offset: -1 -1; } } } part { name: "text"; type: TEXT; mouse_events: 1; // we want to change the color on mouse-over // 2 states, one "default" and another "over" to be used // on mouse over effect description { state: "default" 0.0; color: 255 0 0 255; // red // define part coordinates: rel1 { // top-left at (WIDTH * 0.1 + 5, HEIGHT * 0.2 + 10) relative: 0.1 0.2; offset: 5 10; } rel2 { // bottom-right at (WIDTH * 0.9 - 6, HEIGHT * 0.8 - 11) relative: 0.9 0.8; offset: -6 -11; } // define text specific state details text { font: "Sans"; /* using fontconfig name! */ size: 10; text: "hello world"; } } description { state: "over" 0.0; inherit: "default" 0.0; // copy everything from "default" at this point color: 0 255 0 255; // override color, now it is green } } // do programs to change color on text mouse in/out (over) programs { program { // what triggers this program: signal: "mouse,in"; source: "text"; // what this program does: action: STATE_SET "over" 0.0; target: "text"; // do the state-set in a nice interpolation animation // using linear time in 0.1 second transition: LINEAR 0.1; } program { // what triggers this program: signal: "mouse,out"; source: "text"; // what this program does: action: STATE_SET "default" 0.0; target: "text"; // do the state-set in a nice interpolation animation // using linear time in 0.1 second transition: LINEAR 0.1; } } } } }