group { name: "modules/music-control/icon"; max: 24 24; images { image: "music_control_icon.png" COMP; } parts { part { name: "image"; mouse_events: 0; type: IMAGE; description { state: "default" 0.0; aspect: 1.0 1.0; aspect_preference: BOTH; image.normal: "music_control_icon.png"; } } } } group { name: "modules/music-control/main"; images { image: "music_control_icon.png" COMP; } parts { part { name: "icon"; type: IMAGE; description { state: "default" 0.0; aspect: 1.0 1.0; aspect_preference: BOTH; rel1.relative: 0 0; rel2.relative: 1 1; image.normal: "music_control_icon.png"; } } } } group { name: "modules/music-control/popup"; min: 150 50; images { image: "previous.png" COMP; image: "next.png" COMP; image: "pause.png" COMP; image: "play.png" COMP; } parts { part { name: "player_name"; type: TEXT; description { state: "default" 0; text.size: 12; text.text: "Music player"; text.font: "Sans"; rel1.relative: 0.0 0.0; rel2.relative: 1.0 0.0; rel2.offset: 0 16; } } part { type: IMAGE; name: "previous_btn"; description { state: "default" 0; aspect: 1.0 1.0; aspect_preference: BOTH; rel1.to: "player_name"; rel1.relative: 0.0 1.0; rel2.relative: 0.33 1.0; image.normal: "previous.png"; } } part { type: IMAGE; name: "play_btn"; description { state: "default" 0; aspect: 1.0 1.0; aspect_preference: BOTH; rel1.to: "player_name"; rel1.relative: 0.33 1.0; rel2.relative: 0.66 1.0; image.normal: "pause.png"; } description { state: "play" 0.0; inherit: "default" 0.0; image.normal: "play.png"; } } part { type: IMAGE; name: "next_btn"; description { state: "default" 0; aspect: 1.0 1.0; aspect_preference: BOTH; rel1.to: "player_name"; rel1.relative: 0.66 1.0; rel2.relative: 1.0 1.0; image.normal: "next.png"; } } } programs { program { signal: "mouse,clicked,*"; source: "previous_btn"; action: SIGNAL_EMIT "btn,clicked" "previous"; } program { signal: "mouse,clicked,*"; source: "play_btn"; action: SIGNAL_EMIT "btn,clicked" "play"; } program { signal: "mouse,clicked,*"; source: "next_btn"; action: SIGNAL_EMIT "btn,clicked" "next"; } program { signal: "btn,state,image,play"; source: "play"; action: STATE_SET "play" 0.0; transition: LINEAR 0.1; target: "play_btn"; } program { signal: "btn,state,image,play,no_delay"; source: "play"; action: STATE_SET "play" 0.0; transition: LINEAR 0.0; target: "play_btn"; } program { signal: "btn,state,image,pause"; source: "play"; action: STATE_SET "default" 0.0; transition: LINEAR 0.1; target: "play_btn"; } program { signal: "mouse,clicked,*"; source: "player_name"; action: SIGNAL_EMIT "label,clicked" "player_name"; } } script { public message(Msg_Type:type, id, ...) { new txt[128]; getsarg (2, txt, 128); set_text(PART:"player_name", txt); } } }