#define BUTTON_NAV_PROG(button_name, action_signal) \ program { \ name: "button_"button_name"_in"; \ signal: "mouse,in"; \ source: "button_"button_name"_rect"; \ action: STATE_SET "over" 0.0; \ transition: LINEAR 0.25; \ target: "button_"button_name"_icon"; \ target: "button_"button_name"_bg"; \ } \ program { \ name: "button_"button_name"_out"; \ signal: "mouse,out"; \ source: "button_"button_name"_rect"; \ action: STATE_SET "default" 0.0; \ transition: LINEAR 0.25; \ target: "button_"button_name"_icon"; \ target: "button_"button_name"_bg"; \ } \ program { \ name: "button_"button_name"_down"; \ signal: "mouse,down,1*"; \ source: "button_"button_name"_rect"; \ action: STATE_SET "down" 0.0; \ target: "button_"button_name"_icon"; \ target: "button_"button_name"_shadow"; \ } \ program { \ name: "button_"button_name"_up"; \ signal: "mouse,up,1"; \ source: "button_"button_name"_rect"; \ action: STATE_SET "default" 0.0; \ target: "button_"button_name"_icon"; \ target: "button_"button_name"_shadow"; \ } \ program { \ name: "button_"button_name"_clicked"; \ signal: "mouse,clicked,1"; \ source: "button_"button_name"_rect"; \ action: SIGNAL_EMIT action_signal ""; \ } BUTTON_NAV_PROG("play", "eclair_play"); BUTTON_NAV_PROG("stop", "eclair_stop"); BUTTON_NAV_PROG("prev", "eclair_prev"); BUTTON_NAV_PROG("next", "eclair_next"); BUTTON_NAV_PROG("open", "eclair_open");