Initial commit.
authorTilman Sauerbeck <tilman@code-monkey.de>
Mon, 2 Oct 2006 08:09:42 +0000 (10:09 +0200)
committerTilman Sauerbeck <tilman@code-monkey.de>
Mon, 2 Oct 2006 08:09:42 +0000 (10:09 +0200)
307 files changed:
AUTHORS [new file with mode: 0644]
COPYING [new file with mode: 0644]
ChangeLog [new file with mode: 0644]
NEWS [new file with mode: 0644]
README [new file with mode: 0644]
Rakefile [new file with mode: 0644]
TODO [new file with mode: 0644]
bin/euphoria [new file with mode: 0644]
data/fonts/Vera.ttf [new file with mode: 0644]
data/fonts/micro.ttf [new file with mode: 0644]
data/fonts/redensek.ttf [new file with mode: 0644]
data/themes/common.inc [new file with mode: 0644]
data/themes/default/default.edc [new file with mode: 0644]
data/themes/default/default_images.edc [new file with mode: 0644]
data/themes/default/default_parts.edc [new file with mode: 0644]
data/themes/default/default_playlist_parts.edc [new file with mode: 0644]
data/themes/default/default_playlist_progs.edc [new file with mode: 0644]
data/themes/default/default_progs.edc [new file with mode: 0644]
data/themes/default/default_small_parts.edc [new file with mode: 0644]
data/themes/default/default_small_progs.edc [new file with mode: 0644]
data/themes/default/images/background-dark-green.png [new file with mode: 0644]
data/themes/default/images/background-green.png [new file with mode: 0644]
data/themes/default/images/border-scale.png [new file with mode: 0644]
data/themes/default/images/button-3stage-fulldown.png [new file with mode: 0644]
data/themes/default/images/button-3stage-selected.png [new file with mode: 0644]
data/themes/default/images/button-3stage-unselected.png [new file with mode: 0644]
data/themes/default/images/button-full-blinking.png [new file with mode: 0644]
data/themes/default/images/button-full-clicked.png [new file with mode: 0644]
data/themes/default/images/button-full-normal.png [new file with mode: 0644]
data/themes/default/images/button-full-unblinking.png [new file with mode: 0644]
data/themes/default/images/button-off.png [new file with mode: 0644]
data/themes/default/images/button-on.png [new file with mode: 0644]
data/themes/default/images/button-small-clicked.png [new file with mode: 0644]
data/themes/default/images/button-small-normal.png [new file with mode: 0644]
data/themes/default/images/close_button.png [new file with mode: 0644]
data/themes/default/images/controls-back.png [new file with mode: 0644]
data/themes/default/images/function-button-clicked.png [new file with mode: 0644]
data/themes/default/images/function-button-normal.png [new file with mode: 0644]
data/themes/default/images/lcd_area.png [new file with mode: 0644]
data/themes/default/images/minimize.png [new file with mode: 0644]
data/themes/default/images/set-button-normal.png [new file with mode: 0644]
data/themes/default/images/small-text-button.png [new file with mode: 0644]
data/themes/default/images/tracktor-sample-alive.png [new file with mode: 0644]
data/themes/default/images/tracktor-sample-dead.png [new file with mode: 0644]
data/themes/default/images/vol-display.png [new file with mode: 0644]
data/themes/default/images/vol-label.png [new file with mode: 0644]
data/themes/default/images/vol-minus-clicked.png [new file with mode: 0644]
data/themes/default/images/vol-minus.png [new file with mode: 0644]
data/themes/default/images/vol-plus-clicked.png [new file with mode: 0644]
data/themes/default/images/vol-plus.png [new file with mode: 0644]
data/themes/iio/collections/base_to.edc [new file with mode: 0644]
data/themes/iio/collections/esmart_fd.edc [new file with mode: 0644]
data/themes/iio/collections/playlist.edc [new file with mode: 0644]
data/themes/iio/collections/switch.edc [new file with mode: 0644]
data/themes/iio/fonts/fonts.edc [new file with mode: 0644]
data/themes/iio/fonts/visitor.txt [new file with mode: 0644]
data/themes/iio/fonts/visitor1.ttf [new file with mode: 0644]
data/themes/iio/hashes/containers.edc [new file with mode: 0644]
data/themes/iio/hashes/window.edc [new file with mode: 0644]
data/themes/iio/iio.edc [new file with mode: 0644]
data/themes/iio/img/a_s_lcd.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_01.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_010.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_011.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0112.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0113.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0114.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0115.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0116.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0117.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0118.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0119.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0120.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0121.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0122.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0123.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0124.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0125.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0126.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0127.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0128.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0129.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0130.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0131.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0132.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_0133.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_02.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_03.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_04.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_05.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_06.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_07.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_08.png [new file with mode: 0644]
data/themes/iio/img/a_s_lcd_09.png [new file with mode: 0644]
data/themes/iio/img/add_track.png [new file with mode: 0644]
data/themes/iio/img/add_track_clicked.png [new file with mode: 0644]
data/themes/iio/img/add_track_hilited.png [new file with mode: 0644]
data/themes/iio/img/align_bottom.png [new file with mode: 0644]
data/themes/iio/img/align_center.png [new file with mode: 0644]
data/themes/iio/img/align_left.png [new file with mode: 0644]
data/themes/iio/img/align_right.png [new file with mode: 0644]
data/themes/iio/img/align_top.png [new file with mode: 0644]
data/themes/iio/img/arrow_down.png [new file with mode: 0644]
data/themes/iio/img/arrow_up.png [new file with mode: 0644]
data/themes/iio/img/bar_delay_clicked.png [new file with mode: 0644]
data/themes/iio/img/bar_delay_hilited.png [new file with mode: 0644]
data/themes/iio/img/bar_delay_left.png [new file with mode: 0644]
data/themes/iio/img/bar_delay_right.png [new file with mode: 0644]
data/themes/iio/img/bar_delay_right_clicked.png [new file with mode: 0644]
data/themes/iio/img/bar_delay_right_hilited.png [new file with mode: 0644]
data/themes/iio/img/base_anim.png [new file with mode: 0644]
data/themes/iio/img/base_layer.png [new file with mode: 0644]
data/themes/iio/img/bullet.png [new file with mode: 0644]
data/themes/iio/img/close_button.png [new file with mode: 0644]
data/themes/iio/img/close_button_clicked.png [new file with mode: 0644]
data/themes/iio/img/close_button_hilited.png [new file with mode: 0644]
data/themes/iio/img/close_mode_button_clicked.png [new file with mode: 0644]
data/themes/iio/img/close_mode_button_hilited.png [new file with mode: 0644]
data/themes/iio/img/close_mode_button_normal.png [new file with mode: 0644]
data/themes/iio/img/delete_track.png [new file with mode: 0644]
data/themes/iio/img/delete_track_clicked.png [new file with mode: 0644]
data/themes/iio/img/delete_track_hilited.png [new file with mode: 0644]
data/themes/iio/img/edit_track.png [new file with mode: 0644]
data/themes/iio/img/edit_track_clicked.png [new file with mode: 0644]
data/themes/iio/img/edit_track_hilited.png [new file with mode: 0644]
data/themes/iio/img/h_arrow.png [new file with mode: 0644]
data/themes/iio/img/images.edc [new file with mode: 0644]
data/themes/iio/img/lcd_window.png [new file with mode: 0644]
data/themes/iio/img/left_panel.png [new file with mode: 0644]
data/themes/iio/img/next_button.png [new file with mode: 0644]
data/themes/iio/img/next_button_clicked.png [new file with mode: 0644]
data/themes/iio/img/next_button_hilited.png [new file with mode: 0644]
data/themes/iio/img/pause_button.png [new file with mode: 0644]
data/themes/iio/img/pause_button_clicked.png [new file with mode: 0644]
data/themes/iio/img/pause_button_hilited.png [new file with mode: 0644]
data/themes/iio/img/play_button.png [new file with mode: 0644]
data/themes/iio/img/play_button_clicked.png [new file with mode: 0644]
data/themes/iio/img/play_button_hilited.png [new file with mode: 0644]
data/themes/iio/img/previous_button.png [new file with mode: 0644]
data/themes/iio/img/previous_button_clicked.png [new file with mode: 0644]
data/themes/iio/img/previous_button_hilited.png [new file with mode: 0644]
data/themes/iio/img/right_panel.png [new file with mode: 0644]
data/themes/iio/img/s_b_next.png [new file with mode: 0644]
data/themes/iio/img/s_b_pause.png [new file with mode: 0644]
data/themes/iio/img/s_b_play.png [new file with mode: 0644]
data/themes/iio/img/s_b_prev.png [new file with mode: 0644]
data/themes/iio/img/s_b_stop.png [new file with mode: 0644]
data/themes/iio/img/seeker_bar.png [new file with mode: 0644]
data/themes/iio/img/seeker_trough.png [new file with mode: 0644]
data/themes/iio/img/small_base.png [new file with mode: 0644]
data/themes/iio/img/small_lcd.png [new file with mode: 0644]
data/themes/iio/img/small_lcd_active.png [new file with mode: 0644]
data/themes/iio/img/stop_button.png [new file with mode: 0644]
data/themes/iio/img/stop_button_clicked.png [new file with mode: 0644]
data/themes/iio/img/stop_button_hilited.png [new file with mode: 0644]
data/themes/iio/img/switch_button.png [new file with mode: 0644]
data/themes/iio/img/switch_button_clicked.png [new file with mode: 0644]
data/themes/iio/img/switch_button_hilited.png [new file with mode: 0644]
data/themes/iio/img/switch_mode.png [new file with mode: 0644]
data/themes/iio/img/switch_mode_clicked.png [new file with mode: 0644]
data/themes/iio/img/switch_mode_hilited.png [new file with mode: 0644]
data/themes/iio/img/v_scrollbar.png [new file with mode: 0644]
data/themes/iio/img/v_scrollbar_base.png [new file with mode: 0644]
data/themes/iio/macros/fd_entity.edc [new file with mode: 0644]
data/themes/iio/macros/vpanel.edc [new file with mode: 0644]
data/themes/iio/programs/controls_to.edc [new file with mode: 0644]
data/themes/iio/programs/esmart_fd.edc [new file with mode: 0644]
data/themes/iio/programs/playlist.edc [new file with mode: 0644]
data/themes/iio/programs/switch.edc [new file with mode: 0644]
data/themes/streamline/images/background-dark-green.png [new file with mode: 0644]
data/themes/streamline/images/background-green.png [new file with mode: 0644]
data/themes/streamline/images/border-scale.png [new file with mode: 0644]
data/themes/streamline/images/button-3stage-fulldown.png [new file with mode: 0644]
data/themes/streamline/images/button-3stage-selected.png [new file with mode: 0644]
data/themes/streamline/images/button-3stage-unselected.png [new file with mode: 0644]
data/themes/streamline/images/button-full-blinking.png [new file with mode: 0644]
data/themes/streamline/images/button-full-clicked.png [new file with mode: 0644]
data/themes/streamline/images/button-full-normal.png [new file with mode: 0644]
data/themes/streamline/images/button-full-unblinking.png [new file with mode: 0644]
data/themes/streamline/images/button-off.png [new file with mode: 0644]
data/themes/streamline/images/button-on.png [new file with mode: 0644]
data/themes/streamline/images/button-small-clicked.png [new file with mode: 0644]
data/themes/streamline/images/button-small-normal.png [new file with mode: 0644]
data/themes/streamline/images/close_button.png [new file with mode: 0644]
data/themes/streamline/images/compact-nexttrack-clicked.png [new file with mode: 0644]
data/themes/streamline/images/compact-nexttrack-normal.png [new file with mode: 0644]
data/themes/streamline/images/compact-prevtrack-clicked.png [new file with mode: 0644]
data/themes/streamline/images/compact-prevtrack-normal.png [new file with mode: 0644]
data/themes/streamline/images/compact-seekback-clicked.png [new file with mode: 0644]
data/themes/streamline/images/compact-seekback-normal.png [new file with mode: 0644]
data/themes/streamline/images/compact-seekforward-clicked.png [new file with mode: 0644]
data/themes/streamline/images/compact-seekforward-normal.png [new file with mode: 0644]
data/themes/streamline/images/controls-back.png [new file with mode: 0644]
data/themes/streamline/images/eplayer-interface-2b.png [new file with mode: 0644]
data/themes/streamline/images/lcd_area.png [new file with mode: 0644]
data/themes/streamline/images/minimize.png [new file with mode: 0644]
data/themes/streamline/images/playpause-clicked.png [new file with mode: 0644]
data/themes/streamline/images/playpause-down.png [new file with mode: 0644]
data/themes/streamline/images/playpause-normal.png [new file with mode: 0644]
data/themes/streamline/images/playpause-orange-held.png [new file with mode: 0644]
data/themes/streamline/images/playpause-orange-released.png [new file with mode: 0644]
data/themes/streamline/images/set-button-normal.png [new file with mode: 0644]
data/themes/streamline/images/small-text-button.png [new file with mode: 0644]
data/themes/streamline/images/vol-display.png [new file with mode: 0644]
data/themes/streamline/images/vol-label.png [new file with mode: 0644]
data/themes/streamline/images/vol-minus-clicked.png [new file with mode: 0644]
data/themes/streamline/images/vol-minus.png [new file with mode: 0644]
data/themes/streamline/images/vol-plus-clicked.png [new file with mode: 0644]
data/themes/streamline/images/vol-plus.png [new file with mode: 0644]
data/themes/streamline/streamline.edc [new file with mode: 0644]
data/themes/streamline/streamline_images.edc [new file with mode: 0644]
data/themes/streamline/streamline_parts.edc [new file with mode: 0644]
data/themes/streamline/streamline_playlist_parts.edc [new file with mode: 0644]
data/themes/streamline/streamline_playlist_progs.edc [new file with mode: 0644]
data/themes/streamline/streamline_progs.edc [new file with mode: 0644]
data/themes/streamline/streamline_small_parts.edc [new file with mode: 0644]
data/themes/streamline/streamline_small_progs.edc [new file with mode: 0644]
data/themes/winter/groups/collapsed.edc [new file with mode: 0644]
data/themes/winter/groups/euphoria.edc [new file with mode: 0644]
data/themes/winter/groups/playlist_item.edc [new file with mode: 0644]
data/themes/winter/images/collapsed.edc [new file with mode: 0644]
data/themes/winter/images/euphoria.edc [new file with mode: 0644]
data/themes/winter/img/bot.png [new file with mode: 0644]
data/themes/winter/img/bot_grad.png [new file with mode: 0644]
data/themes/winter/img/dot.png [new file with mode: 0644]
data/themes/winter/img/edit1.png [new file with mode: 0644]
data/themes/winter/img/edit2.png [new file with mode: 0644]
data/themes/winter/img/ff1.png [new file with mode: 0644]
data/themes/winter/img/ff2.png [new file with mode: 0644]
data/themes/winter/img/main.png [new file with mode: 0644]
data/themes/winter/img/minus1.png [new file with mode: 0644]
data/themes/winter/img/minus2.png [new file with mode: 0644]
data/themes/winter/img/next1.png [new file with mode: 0644]
data/themes/winter/img/next2.png [new file with mode: 0644]
data/themes/winter/img/panel.png [new file with mode: 0644]
data/themes/winter/img/pause1.png [new file with mode: 0644]
data/themes/winter/img/pause2.png [new file with mode: 0644]
data/themes/winter/img/pl1.png [new file with mode: 0644]
data/themes/winter/img/pl2.png [new file with mode: 0644]
data/themes/winter/img/play1.png [new file with mode: 0644]
data/themes/winter/img/play2.png [new file with mode: 0644]
data/themes/winter/img/plus1.png [new file with mode: 0644]
data/themes/winter/img/plus2.png [new file with mode: 0644]
data/themes/winter/img/prev1.png [new file with mode: 0644]
data/themes/winter/img/prev2.png [new file with mode: 0644]
data/themes/winter/img/rew1.png [new file with mode: 0644]
data/themes/winter/img/rew2.png [new file with mode: 0644]
data/themes/winter/img/screen.png [new file with mode: 0644]
data/themes/winter/img/seeker_bar.png [new file with mode: 0644]
data/themes/winter/img/seeker_bar_grad.png [new file with mode: 0644]
data/themes/winter/img/seeker_trough.png [new file with mode: 0644]
data/themes/winter/img/shad.png [new file with mode: 0644]
data/themes/winter/img/small-ff1.png [new file with mode: 0644]
data/themes/winter/img/small-ff2.png [new file with mode: 0644]
data/themes/winter/img/small-left-grad.png [new file with mode: 0644]
data/themes/winter/img/small-main.png [new file with mode: 0644]
data/themes/winter/img/small-next1.png [new file with mode: 0644]
data/themes/winter/img/small-next2.png [new file with mode: 0644]
data/themes/winter/img/small-panel.png [new file with mode: 0644]
data/themes/winter/img/small-pause1.png [new file with mode: 0644]
data/themes/winter/img/small-pause2.png [new file with mode: 0644]
data/themes/winter/img/small-play1.png [new file with mode: 0644]
data/themes/winter/img/small-play2.png [new file with mode: 0644]
data/themes/winter/img/small-prev1.png [new file with mode: 0644]
data/themes/winter/img/small-prev2.png [new file with mode: 0644]
data/themes/winter/img/small-rew1.png [new file with mode: 0644]
data/themes/winter/img/small-rew2.png [new file with mode: 0644]
data/themes/winter/img/small-right-grad.png [new file with mode: 0644]
data/themes/winter/img/small-right.png [new file with mode: 0644]
data/themes/winter/img/small-seeker-bar.png [new file with mode: 0644]
data/themes/winter/img/small-seeker-trough.png [new file with mode: 0644]
data/themes/winter/img/top_grad.png [new file with mode: 0644]
data/themes/winter/img/vol-dn-border.png [new file with mode: 0644]
data/themes/winter/img/vol-dn-clicked.png [new file with mode: 0644]
data/themes/winter/img/vol-dn-over.png [new file with mode: 0644]
data/themes/winter/img/vol-dn.png [new file with mode: 0644]
data/themes/winter/img/vol-up-border.png [new file with mode: 0644]
data/themes/winter/img/vol-up-clicked.png [new file with mode: 0644]
data/themes/winter/img/vol-up-over.png [new file with mode: 0644]
data/themes/winter/img/vol-up.png [new file with mode: 0644]
data/themes/winter/img/volume.png [new file with mode: 0644]
data/themes/winter/img/x1.png [new file with mode: 0644]
data/themes/winter/img/x2.png [new file with mode: 0644]
data/themes/winter/macros/macros.inc [new file with mode: 0644]
data/themes/winter/macros/toggle.inc [new file with mode: 0644]
data/themes/winter/parts/ani.edc [new file with mode: 0644]
data/themes/winter/parts/buttons.edc [new file with mode: 0644]
data/themes/winter/parts/main.edc [new file with mode: 0644]
data/themes/winter/parts/playlist.edc [new file with mode: 0644]
data/themes/winter/parts/seeker.edc [new file with mode: 0644]
data/themes/winter/parts/text.edc [new file with mode: 0644]
data/themes/winter/parts/volume.edc [new file with mode: 0644]
data/themes/winter/programs/ani.edc [new file with mode: 0644]
data/themes/winter/programs/buttons.edc [new file with mode: 0644]
data/themes/winter/programs/playlist.edc [new file with mode: 0644]
data/themes/winter/programs/seeker.edc [new file with mode: 0644]
data/themes/winter/programs/switch.edc [new file with mode: 0644]
data/themes/winter/programs/text.edc [new file with mode: 0644]
data/themes/winter/programs/volume.edc [new file with mode: 0644]
data/themes/winter/winter.edc [new file with mode: 0644]
lib/file_dialog.rb [new file with mode: 0644]
lib/playback_status_handler.rb [new file with mode: 0644]
lib/playlist.rb [new file with mode: 0644]
lib/playlist_item.rb [new file with mode: 0644]
lib/playtime_updater.rb [new file with mode: 0644]
lib/slider.rb [new file with mode: 0644]
lib/volume_box.rb [new file with mode: 0644]

diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..5864b3d
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1 @@
+Tilman Sauerbeck (tilman at code-monkey de)
diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..838979c
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,21 @@
+Copyright (C) 2004 - 2005 Tilman Sauerbeck and various contributors
+                          (see AUTHORS)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+  
+The above copyright notice and this permission notice shall be included in
+all copies of the Software, its documentation and marketing & publicity 
+materials, and acknowledgment shall be given in the documentation, materials
+and software packages that this Software was used.
+   
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..42948b6
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,168 @@
+$Id: ChangeLog,v 1.2 2004/03/16 18:14:33 tsauerbeck Exp $
+
+2004-03-16 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * data/README, src/interface.c, src/euphoria.[ch],
+          src/callbacks.c: added support for vertical and inverted
+          seekers.
+
+2004-02-22 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * This sweet application is a XMMS2 frontend now
+
+2004-02-15 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * src/interface.c, src/playlist_item.[ch], src/plugin.h,
+          src/input/vorbis/vorbis.c: added bitrate and sample rate
+          parts
+
+2004-02-03 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * src/playlist.c, src/playlist_item.c, src/callbacks.c:
+          The UI parts and playlist are now correctly re-initialized
+          after a group switch
+
+2004-02-01 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * src/eplayer.c, src/interface.c, src/playlist.c,
+          src/playlist_item.c: Each PlayListItem object now
+          has its own Edje object
+        * data/README, src/eplayer.c: Added two signals,
+          PLAYBACK_STARTED and PLAYBACK_STOPPED
+        * src/callbacks.c: The playlist marker now always follows
+          the track that's being played
+
+2004-01-24 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * src/eplayer.c, src/plugin.c: Switched to libltdl
+        * src/interface.c: added draggie support, removed the RAISE
+          signal.
+
+2003-12-28 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * src/callbacks.c, src/playlist.c, src/interface.c,
+          data/README: Added PLAYLIST_ITEM_REMOVE (thanks to atmos).
+
+2003-12-07 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * src/output/alsa/alsa.c: make sure changes made to the
+          mixer levels w/ other applications (like alsamixer) are
+          reflected in eplayer
+        * src/eplayer.c, src/track.c, src/interface.c:
+          update the track info parts etc on group switch
+        * src/interface.c, src/callbacks.[ch], data/README:
+          added STOP signal
+
+2003-12-04 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * src/eplayer.c: eplayer.db lives in ~/.e/apps/eplayer now
+        * data/themes/default/default.edc: Added repeat mode toggle
+          button
+
+2003-11-30 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * src/data/eplayer.edc: Added "small" (collapsed) mode
+          to the eplayer theme (thanks to digitalfallout!).
+          Fixed indentation as well.
+
+2003-11-24 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * src/interface.[ch], scr/callbacks.[ch], data/README:
+          Added SWITCH_GROUP edje signal
+
+2003-11-18 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * src/interface.c, src/eplayer.c, src/eplayer.h:
+          The theme that's to be used can now be set in eplayer.db
+
+2003-11-17 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * src/playlist.c: Fixed playlist_load_dir()
+        * src/interface.c, data/README:
+          Added QUIT signal, thanks to digitalfallout
+        * src/interface.c, src/callbacks.c, data/README:
+          Updated playlist scrolling signals/code, added
+          PLAYLIST_ITEM_PLAY
+
+2003-11-15 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * src/interface.c: Fixed playlist scrolling
+        * src/interface.c, src/callbacks.c, data/README:
+          Added repeat mode stuff
+        * src/interface.c, src/callbacks.c, data/eplayer.edc,
+          data/README: Simplified playlist code
+
+2003-11-14 Tilman Sauerbeck <tilman -at- Â¢ode-monkey.de>
+        * src/playlist.c, src/eplayer.c, src/interface.c:
+          The playlist is loaded/displayed after the GUI has been
+          initialized now.
+
+2003-11-10 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * src/playlist.c: Misc fixes
+        * src/callbacks.c: Reset paused state on next/prev/seek
+        * data/README: Updated Edje documentation
+
+2003-10-25 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * src/eplayer.c, src/track.c: Put the decoding/playing
+          code in a separate thread
+
+2003-10-24 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * src/input/avcodec: Added libavcodec input plugin
+        * src/input/avcodec/avcodec.c: Now uses libavformat to read
+          MP3 tags.
+
+2003-10-23 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * src/input: Added a input plugin system
+        * src/vorbis.c, src/input/vorbis: Move vorbis specific code
+          to its own plugin
+
+2003-10-22 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * configure.ac: Fix OSS check, add checks for Solaris' audioio.h
+          and ALSA
+        * src/output/solaris: Added Solaris output plugin
+        * src/output/alsa: Added ALSA output plugin
+        * etc/Makefile.am, src/eplayer.c: We have a config file now
+
+2003-10-21 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * configure.ac: check for sys/soundcard.h to determine whether
+          the OSS output plugin should be built
+        * src/vorbis.c, src/output: added output plugin stuff to replace
+          libao
+        * src/output/oss/oss.c: added OSS output plugin
+        * src/mixer.c, src/mixer.h: removed, mixer is controlled by the
+          output plugin now
+        * misc other stuff
+
+2003-10-18 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * src/vorbis.c: track_open() initializes the "time_text"
+          part, too
+        * src/callbacks.c: when cb_track_next() is called after the
+          last playlist item, it moves to the beginning again, without
+          starting playback.
+        * src/callbacks.c: cb_track_prev() does nothing when it's
+          called on the beginning of the playlist
+
+2003-10-17 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * src/mixer.c, src/mixer.h, src/eplayer.c, src/callbacks.c,
+          interface.c:
+          Rewrote mixer code, the mixer is periodically read now to
+          reflect changes made by other applications
+        * src/eplayer.c: Added _playback_start(), _playback_stop()
+        * src/vorbis.c: The "time" part is updated in a sane
+          period now
+        * src/vorbis.c, src/eplayer.c: Tidied up libao calls
+        * data/eplayer.edc: buttons emit their signals on mouse_up now
+        * src/vorbis.c: Fixed a memory leak which was caused by not
+          calling ao_close() in track_close()
+        * data/eplayer.edc, src/callbacks.c, src/interface.c:
+          The playlist can be scrolled using the mousewheel now
+        * src/eplayer.c: check ao_default_driver_id() on startup
+
+2003-10-16 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * configure.ac: Added endianess-check, added --enable-debug
+          switch
+        * src/eplayer.c, src/playlist.c: added playlist_load_any(),
+          eplayer will now load files and directories as well
+        * code cleanup
+        * configure.ac, Makefile.am etc: implemented install and
+          dist targets
+        * src/playlist.c: Fixed a potential segfault
+        * src/vorbis.c: Fixed a segfault that occurred when
+          play_loop() called open_track() with player->cur_item
+          being NULL
+
+2003-10-15 Tilman Sauerbeck <tilman -at- code-monkey.de>
+        * data/eplayer.edc: Added basic playlist support,
+          time_text shows elapsed time or time left
+        * src/Makefile.am: Now linking to libesmart, included playlist.c
+          and playlist.h
+        * src/playlist.c,h: Added playlist object
+        * src/eplayer.c, interface.c: Added basic playlist support
+        * autogen.sh, configure.ac, src/Makefile.am:
+          Updated build system
diff --git a/NEWS b/NEWS
new file mode 100644 (file)
index 0000000..53a90bf
--- /dev/null
+++ b/NEWS
@@ -0,0 +1 @@
+Empty
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..450f719
--- /dev/null
+++ b/README
@@ -0,0 +1,78 @@
+$Id: README,v 1.11 2005/05/21 08:39:19 tsauerbeck Exp $
+
+Euphoria v0.8.0
+
+Written by Tilman Sauerbeck and various contributors.
+See AUTHORS for details/the complete list.
+
+
+DEPENDENCIES
+------------
+
+Euphoria requires the following:
+
+Evas
+Ecore
+Edje
+Esmart
+XMMS2
+Ruby-EFL
+Rake
+
+
+ABOUT
+-------
+
+Euphoria is an audio player which is based on Ecore, Evas and Edje.
+It acts as a frontend to XMMS2.
+
+INSTALLATION OF EUPHORIA & XMMS2
+--------------------------------
+To use build Euphoria you will need to first install XMMS2.
+See http://wiki.xmms2.xmms.se for instructions.
+
+Now install Euphoria by running "rake install".
+
+At this point you're ready to rock.  Start Euphoria but make sure
+the XMMS2 Daemon is running.
+
+RUNNING EUPHORIA
+----------------
+
+For the time being (as of this writting) you need to manage your
+play list using the CLI client.  An example session would be:
+
+1) Open an Eterm and start the daemon so you can see debugging
+       information: "xmms2d"
+2) Open an Eterm to control XMMS2, use the following commands:
+       $ xmms2 add /path/to/some/files
+       $ xmms2 add http://205.188.234.65:8022
+       $ xmms2 list
+       (now the playlist has stuff in it)
+3) Start Euphoria with no options.
+
+REPORTING BUGS
+---------------
+
+You can report bugs here: http://xcomputerman.com/bugs/
+
+
+FAQ
+-------
+
+Q: Will you support WinAmp skins?
+A: -> Nope.... go use XMMS(1) if you want traditional skins.
+Refer to the first question.
+
+But I will admit that I have considered the possiblity of automating
+the conversion of WinAmpv3 skins (.wal's) to Edje.
+It doesn't look hard, and Edje can do everything and more that WinAmp
+can do with it's interface, but in a far more general way.
+
+The problem is really just parsing all that XML (the WA skin config
+files are now XML).  With PERL there could probly be an easy conversion,
+but if there is one thing I hate parsing it's XML.
+
+It would instantly make this audio player the player to use though!
+
diff --git a/Rakefile b/Rakefile
new file mode 100644 (file)
index 0000000..b5fb11f
--- /dev/null
+++ b/Rakefile
@@ -0,0 +1,37 @@
+# $Id: Rakefile,v 1.10 2005/06/14 16:41:52 tsauerbeck Exp $
+
+require "rbconfig"
+require "rake/clean"
+
+sitelibdir = ENV["RUBYLIBDIR"] || Config::CONFIG["sitelibdir"]
+destdir = "#{ENV["DESTDIR"]}"
+prefix = ENV["PREFIX"] || "/usr/local"
+
+themes = ["iio", "winter"].map do |t|
+       "data/themes/#{t}/#{t}.edj"
+end
+
+CLOBBER.include(themes)
+
+task :default => :themes
+task :themes => themes
+
+rule ".edj" => [".edc"] do |t|
+       Dir.chdir(File.dirname(t.source)) do
+               sh "edje_cc -id img -id images " +
+                  "-fd ../../fonts -fd fonts #{File.basename(t.source)}"
+       end
+end
+
+task :install => :themes do |t|
+       ddir = destdir + prefix + "/bin"
+       FileUtils::Verbose.install("bin/euphoria", ddir, :mode => 0755)
+
+       ddir = destdir + sitelibdir + "/euphoria"
+       FileUtils::Verbose.mkdir_p(ddir) unless File.directory?(ddir)
+       FileUtils::Verbose.install(Dir["lib/*.rb"], ddir, :mode => 0644)
+
+       ddir = destdir + prefix + "/share/euphoria/themes"
+       FileUtils::Verbose.mkdir_p(ddir) unless File.directory?(ddir)
+       FileUtils::Verbose.install(themes, ddir, :mode => 0644)
+end
diff --git a/TODO b/TODO
new file mode 100644 (file)
index 0000000..22ce51e
--- /dev/null
+++ b/TODO
@@ -0,0 +1,11 @@
+EDC Default Theme TODO: 
+
+-> Fix default size of the time text in the "minimized version" -> DONE
+-> Replace the ugly close button.      -> DONE
+-> Constrain double clicks to active minimized action only on the top "title bar" area. -> DONE
+-> When switching from minimized to fullsize and back title, etc, aren't updated.
+       Also, the playlist doesn't redraw.
+-> Holding down seek forward or back should seek in a loop.
+-> Change the full size buttons to something with graphics instead of text and use diffrent buttons.
+-> Add codec display to LCD
+-> Fix push animations.
diff --git a/bin/euphoria b/bin/euphoria
new file mode 100644 (file)
index 0000000..707d9e0
--- /dev/null
@@ -0,0 +1,402 @@
+#!/usr/bin/ruby -w
+
+# $Id: euphoria,v 1.41 2006/09/07 13:38:26 tilman Exp $
+
+require "ecore"
+require "ecore_x"
+require "ecore_evas"
+require "edje"
+require "esmart"
+require "esmart_draggies"
+require "esmart_container"
+require "xmmsclient"
+require "xmmsclient_ecore"
+require "singleton"
+require "yaml"
+require "find"
+require "fileutils"
+
+require "euphoria/playlist"
+require "euphoria/playlist_item"
+require "euphoria/slider"
+require "euphoria/volume_box"
+require "euphoria/playtime_updater"
+require "euphoria/playback_status_handler"
+require "euphoria/file_dialog"
+
+Config = Struct.new("Config", :ipc_path, :theme, :time_display_elapsed)
+
+# backwards compatibility w/ DrFeelgood and earlier
+unless Xmms.respond_to?(:userconfdir)
+       def Xmms.userconfdir
+               File.join(File.expand_path("~"), ".xmms2")
+       end
+end
+
+class Euphoria
+       DATA_DIR = "/usr/local/share/euphoria"
+       DATA_DIR_PRIV = File.join(Xmms.userconfdir,
+                                 "clients",
+                                 "euphoria")
+
+       include Singleton
+
+       attr_reader :xmms, :ee, :edje
+
+       def initialize
+               @edje = nil
+               @xmms = nil
+               @volume_box = nil
+
+               # settings
+               unless File.directory?(DATA_DIR_PRIV)
+                       FileUtils.mkdir_p(DATA_DIR_PRIV)
+               end
+
+               @config_file = DATA_DIR_PRIV + "/config.yaml"
+
+               load_config
+               init_xmms
+               init_gui
+
+               blk = lambda { |item| ui_fill_track_info(item) }
+               @playlist = Playlist.new(@xmms, blk)
+
+               setup_callbacks
+
+               @playtime_updater = PlaytimeUpdater.new(xmms) do |current_pos|
+                       ui_refresh_time(current_pos)
+
+                       # refresh the seeker
+                       if !@playlist.current_item.nil?
+                               d = @playlist.current_item.duration
+                               if d > 0
+                                       ui_refresh_seeker(current_pos / d.to_f)
+                               end
+                       end
+               end
+
+               PlaybackStatusHandler.new(xmms) do |state|
+                       @playback_state = state
+
+                       signal_playback_state
+                       @playtime_updater.enabled =
+                               (@playback_state == Xmms::Client::PLAY)
+               end
+
+               # is repeat enabled?
+               s = @xmms.configval_get("playlist.repeat_all").wait.value
+               @repeat = (s == "1")
+               @edje.emit_signal("TOGGLE_REPEAT_MODE", "Euphoria") if @repeat
+
+               @sliders = {}
+
+               unless @edje.data("has_volume_slider").nil?
+                       @sliders["volume"] = VolumeSlider.new(@edje, @xmms,
+                                                             "player.slider.volume")
+               end
+
+               if @edje.part_exists?("vol_display_text")
+                       # FIXME Maybe rename the part to volume_box
+                       @volume_box = VolumeBox.new(@edje, @xmms, "player.volumeBox")
+               end
+
+=begin
+               unless @edje.data("has_eq_slider").nil?
+                       1.upto(10) do |i|
+                               p = "player.slider.eq.band%02i" % i
+                               k = "equalizer.gain#{i - 1}"
+                               @sliders[k] = EqSlider.new(@edje, @xmms, p, k)
+                       end
+               end
+=end
+
+               handle_current_pos(@xmms.playlist_current_pos.wait)
+       end
+
+       def show
+               if @edje.data("has_separate_playlist").nil?
+                       @playlist.show(@theme, false)
+               end
+
+               @ee.show
+       end
+
+       def save_config
+               File.open(@config_file, "w") { |fo| YAML.dump(@config, fo) }
+       end
+
+       def show_file_dialog
+               if @file_dialog_theme.nil?
+                       puts "file dialog edje not found"
+                       return
+               end
+
+               FileDialog.open(@file_dialog_theme) do |sel|
+                       if File.directory?(sel)
+                               files = []
+                               Find.find(sel) { |f| files << f if File.file?(f) }
+
+                               files.sort.each do |f|
+                                       @xmms.playlist_add("file://" + f).wait
+                               end
+                       elsif File.exists?(sel)
+                               @xmms.playlist_add("file://" + sel).wait
+                       end
+               end
+       end
+
+private
+       def init_gui
+               @ee = Ecore::Evas::SoftwareX11.new
+               @ee.title = "Euphoria"
+               @ee.name_class = ["Euphoria", "Euphoria"]
+               @ee.borderless = true
+
+               #@ee.evas.font_path_append("/usr/X11R6/lib/X11/fonts/TTF")
+               #@ee.evas.font_path_append(ENV["HOME"] + "/.fonts")
+
+               @ee.on_pre_render { Edje::thaw }
+               @ee.on_post_render { Edje::freeze }
+
+               @ee.on_resize do
+                       x, y, w, h = @ee.geometry
+
+                       @edje.resize(w, h)
+                       @dragger.resize(w, h)
+               end
+
+               @dragger = Esmart::Draggies.new(@ee)
+               @dragger.name = "dragger"
+               @dragger.button = 1
+               @dragger.show
+
+               @theme = find_theme(@config.theme)
+               raise "Cannot find theme - #{@config.theme}" if @theme.nil?
+
+               if Edje.collections(@theme).include?("esmart.filedialog")
+                       @file_dialog_theme = @theme
+               else
+                       @file_dialog_theme = find_theme("file_dialog")
+               end
+
+               @edje = Edje::Edje.new(@ee.evas)
+               @edje.load(@theme, "euphoria")
+               @edje.name = "edje"
+               @edje.show
+
+               w, h = @edje.get_size_max
+               @ee.set_size_max(w, h)
+
+               w, h = @edje.get_size_min
+               @ee.set_size_min(w, h)
+
+               @ee.resize(w, h)
+
+               @ee.shaped = !@edje.data("shaped").nil?
+
+               ui_refresh_seeker(0)
+       end
+
+       def init_xmms
+               @xmms = Xmms::Client.new("Euphoria")
+               @xmms.connect(ENV["XMMS_PATH"] || @config.ipc_path)
+               @xmms.add_to_ecore_mainloop
+
+               @xmms.on_disconnect do
+                       puts "daemon exited, shutting down"
+                       Ecore.main_loop_quit
+               end
+       end
+
+       def setup_callbacks
+               @edje.on_signal("quit") do
+                       Ecore::main_loop_quit
+               end
+
+               @edje.on_signal("close") do
+                       Ecore::main_loop_quit
+               end
+
+               @edje.on_signal("playback.play") do
+                       case @playback_state
+                               when Xmms::Client::PLAY
+                                       @xmms.playback_stop.wait
+                                       sleep(0.5) # evil hack, fix xmms2d instead
+                                       @xmms.playback_start.wait
+                               else
+                                       @xmms.playback_start.wait
+                       end
+               end
+
+               @edje.on_signal("playback.stop") do
+                       @xmms.playback_stop.wait
+               end
+
+               @edje.on_signal("playback.pause") do
+                       case @playback_state
+                               when Xmms::Client::PLAY
+                                       @xmms.playback_pause.wait
+                               when Xmms::Client::PAUSE
+                                       @xmms.playback_start.wait
+                       end
+               end
+
+               @edje.on_signal("playback.next") do
+                       @xmms.playlist_set_next_rel(1).wait
+                       @xmms.playback_tickle.wait
+
+                       if @playback_state != Xmms::Client::PLAY
+                               @xmms.playback_start.wait
+                       end
+               end
+
+               @edje.on_signal("playback.prev") do
+                       @xmms.playlist_set_next_rel(-1).wait
+                       @xmms.playback_tickle.wait
+
+                       if @playback_state != Xmms::Client::PLAY
+                               @xmms.playback_start.wait
+                       end
+               end
+
+               @edje.on_signal("TOGGLE_TIME_DISPLAY_MODE") do
+                       @config.time_display_elapsed = !@config.time_display_elapsed
+               end
+
+               @edje.on_signal("DEBUG") do |sig, source|
+                       puts source
+               end
+
+               @edje.on_signal("playlist.open") { @playlist.show(@theme, true) }
+
+               @edje.on_signal("file_dialog.open") do
+                       show_file_dialog
+               end
+
+               @edje.on_signal("TOGGLE_REPEAT_MODE") do |sig, source|
+                       # don't react on our own emission
+                       next if source == "Euphoria"
+
+                       @repeat = !@repeat
+
+                       v = @repeat ? "1" : "0"
+                       @xmms.configval_set("playlist.repeat_all", v).wait
+               end
+
+               @xmms.broadcast_configval_changed.notifier do |res|
+                       k = res.value.keys.first
+                       v = res.value.values.first
+
+                       case k
+                               when "playlist.repeat_all"
+                                       tmp = (v == "1")
+                                       if tmp != @repeat
+                                               @repeat = tmp
+                                               @edje.emit_signal("TOGGLE_REPEAT_MODE", "Euphoria")
+                                       end
+                               when /equalizer\.gain(\d+)/
+                                       @sliders[k].value = v.to_f
+                       end
+               end
+
+               @xmms.broadcast_playback_volume_changed.notifier do |res|
+                       if @edje.data("has_volume_slider")
+                               @sliders["volume"].value = res.value
+                       end
+
+                       if @edje.part_exists?("vol_display_text")
+                               @volume_box.value = res.value
+                       end
+               end
+
+               @xmms.broadcast_playlist_current_pos.notifier do |res|
+                       handle_current_pos(res)
+               end
+       end
+
+       def handle_current_pos(res)
+               begin
+                       pos = res.value
+               rescue Xmms::Result::ValueError
+               else
+                       ui_fill_track_info(@playlist[pos])
+               end
+       end
+
+       def ui_fill_track_info(item)
+               unless item.nil?
+                       if item.channel.nil?
+                               msg = Edje::Message.new(0, item.artist, item.title, item.album)
+                       else
+                               msg = Edje::Message.new(0, "", item.title, "")
+                       end
+                       @edje.send_message(msg)
+               end
+       end
+
+       def ui_refresh_time(time)
+               return unless @edje.part_exists?("player.time")
+
+               fmt = "%i:%02i"
+
+               unless @config.time_display_elapsed
+                       time = @playlist.current_item.duration - time
+                       fmt = "-" + fmt
+               end
+
+               tmp = fmt % [time / 60, time % 60]
+               @edje.part("player.time").text = tmp
+       end
+
+       def ui_refresh_seeker(pos)
+               if @edje.part_exists?("seeker")
+                       @edje.part("seeker").set_drag_value(pos, 0.1)
+                       #@edje.thaw
+                       #@edje.evas.render
+               end
+       end
+
+       def signal_playback_state
+               sig = case @playback_state
+                       when Xmms::Client::PAUSE
+                               "PLAYBACK_STATE_PAUSED"
+                       when Xmms::Client::PLAY
+                               "PLAYBACK_STATE_PLAYING"
+                       else
+                               "PLAYBACK_STATE_STOPPED"
+               end
+
+               @edje.emit_signal(sig, "Euphoria")
+       end
+
+       def load_config
+               @config = nil
+
+               if File.exist?(@config_file)
+                       File.open(@config_file) { |fo| @config = YAML.load(fo) }
+               end
+
+               if @config.nil? || !@config.is_a?(Config)
+                       @config = Config.new
+                       @config.ipc_path = nil
+                       @config.theme = "winter"
+                       @config.time_display_elapsed = true
+               end
+       end
+
+       def find_theme(name)
+               dirs = [DATA_DIR_PRIV, DATA_DIR]
+               dirs.each do |dir|
+                       tmp = File.join(dir, "themes/#{name}.edj")
+                       return tmp if File.exist?(tmp)
+               end
+
+               nil
+       end
+end
+
+$x = Euphoria.instance
+Euphoria.instance.show
+Ecore::main_loop_begin
+Euphoria.instance.save_config
diff --git a/data/fonts/Vera.ttf b/data/fonts/Vera.ttf
new file mode 100644 (file)
index 0000000..58cd6b5
Binary files /dev/null and b/data/fonts/Vera.ttf differ
diff --git a/data/fonts/micro.ttf b/data/fonts/micro.ttf
new file mode 100644 (file)
index 0000000..a94ae16
Binary files /dev/null and b/data/fonts/micro.ttf differ
diff --git a/data/fonts/redensek.ttf b/data/fonts/redensek.ttf
new file mode 100644 (file)
index 0000000..a616653
Binary files /dev/null and b/data/fonts/redensek.ttf differ
diff --git a/data/themes/common.inc b/data/themes/common.inc
new file mode 100644 (file)
index 0000000..1a07e8f
--- /dev/null
@@ -0,0 +1,6 @@
+#if defined __COMMON_INC
+#endinput
+#endif
+#define __COMMON_INC
+
+#define MSG_ID_SET_SONGNAME 0
diff --git a/data/themes/default/default.edc b/data/themes/default/default.edc
new file mode 100644 (file)
index 0000000..23df4b9
--- /dev/null
@@ -0,0 +1,50 @@
+/*****************************************************************/
+/* Euphoria Default Theme - by: Ben Rockwood                     */
+/* Design to pay homage to the awsome interface design           */
+/*    of the Native Instruments tools, namely Traktor            */
+/*****************************************************************/
+
+images {
+       #include "default_images.edc"
+}
+
+collections {
+        group {
+                min, 300 60;
+                max, 300 60;
+                name, "euphoria_small";
+
+               parts {
+                       #include "default_small_parts.edc"
+               }
+               programs {
+                       #include "default_small_progs.edc"
+               }
+       }
+
+       group {
+               min, 200 320;
+                max, 200 1280;
+                name, "euphoria";
+                parts {
+                       #include "default_parts.edc"
+               }
+                programs {
+                        #include "default_progs.edc"
+                }
+        }
+
+        group {
+                name, "playlist_item";
+                min, 200 12;
+                max, 200 12;
+
+                parts {
+                       #include "default_playlist_parts.edc"
+               }
+               programs {
+                       #include "default_playlist_progs.edc"
+               }
+       }
+}
+
diff --git a/data/themes/default/default_images.edc b/data/themes/default/default_images.edc
new file mode 100644 (file)
index 0000000..3d9bd61
--- /dev/null
@@ -0,0 +1,57 @@
+/** Image Spec List:
+background-dark-green.png:    PNG image data, 32 x 32, 8-bit/color RGBA, non-interlaced
+background-green.png:         PNG image data, 30 x 30, 8-bit/color RGB, non-interlaced
+border-scale.png:             PNG image data, 28 x 28, 8-bit/color RGBA, non-interlaced
+button-3stage-fulldown.png:   PNG image data, 56 x 40, 8-bit/color RGBA, non-interlaced
+button-3stage-selected.png:   PNG image data, 56 x 40, 8-bit/color RGBA, non-interlaced
+button-3stage-unselected.png: PNG image data, 56 x 40, 8-bit/color RGBA, non-interlaced
+button-full-blinking.png:     PNG image data, 56 x 40, 8-bit/color RGBA, non-interlaced
+button-full-clicked.png:      PNG image data, 56 x 40, 8-bit/color RGBA, non-interlaced
+button-full-normal.png:       PNG image data, 56 x 40, 8-bit/color RGBA, non-interlaced
+button-full-unblinking.png:   PNG image data, 56 x 40, 8-bit/color RGBA, non-interlaced
+button-off.png:               PNG image data, 57 x 20, 8-bit/color RGB, non-interlaced
+button-on.png:                PNG image data, 57 x 20, 8-bit/color RGB, non-interlaced
+button-small-clicked.png:     PNG image data, 28 x 20, 8-bit/color RGBA, non-interlaced
+button-small-normal.png:      PNG image data, 28 x 20, 8-bit/color RGBA, non-interlaced
+close_button.png:             PNG image data, 8 x 8, 8-bit/color RGBA, non-interlaced
+controls-back.png:            PNG image data, 37 x 19, 8-bit/color RGBA, non-interlaced
+function-button-clicked.png:  PNG image data, 54 x 20, 8-bit/color RGB, non-interlaced
+function-button-normal.png:   PNG image data, 54 x 20, 8-bit/color RGB, non-interlaced
+lcd_area.png:                 PNG image data, 14 x 13, 8-bit/color RGB, non-interlaced
+minimize.png:                 PNG image data, 7 x 2, 8-bit/color RGBA, non-interlaced
+set-button-normal.png:        PNG image data, 58 x 43, 8-bit/color RGB, non-interlaced
+small-text-button.png:        PNG image data, 34 x 20, 8-bit/color RGBA, non-interlaced
+vol-display.png:              PNG image data, 23 x 20, 8-bit/color RGBA, non-interlaced
+vol-label.png:                PNG image data, 21 x 20, 8-bit/color RGBA, non-interlaced
+vol-minus-clicked.png:        PNG image data, 29 x 20, 8-bit/color RGBA, non-interlaced
+vol-minus.png:                PNG image data, 29 x 20, 8-bit/color RGBA, non-interlaced
+vol-plus-clicked.png:         PNG image data, 25 x 20, 8-bit/color RGBA, non-interlaced
+vol-plus.png:                 PNG image data, 25 x 20, 8-bit/color RGBA, non-interlaced
+                                                                                       **/
+
+        image, "border-scale.png" RAW;
+        image, "button-full-clicked.png" RAW;
+        image, "button-full-normal.png" RAW;
+        image, "lcd_area.png" RAW;
+        image, "background-dark-green.png" RAW;
+        image, "controls-back.png" RAW;
+        image, "button-3stage-fulldown.png"     RAW;
+        image, "button-3stage-selected.png"     RAW;
+        image, "button-3stage-unselected.png"   RAW;
+        image, "button-full-blinking.png" RAW;
+        image, "button-full-unblinking.png" RAW;
+        image, "vol-display.png" RAW;
+        image, "vol-label.png" RAW;
+        image, "vol-minus.png" RAW;
+        image, "vol-plus.png" RAW;
+        image, "vol-minus-clicked.png" RAW;
+        image, "vol-plus-clicked.png" RAW;
+        image, "small-text-button.png" RAW;
+        image, "button-small-normal.png" RAW;
+        image, "button-small-clicked.png" RAW;
+        image, "button-on.png" RAW;
+        image, "button-off.png" RAW;
+        image, "close_button.png" RAW;
+        image, "minimize.png" RAW;
+        image, "function-button-clicked.png" RAW;
+        image, "function-button-normal.png" RAW;
diff --git a/data/themes/default/default_parts.edc b/data/themes/default/default_parts.edc
new file mode 100644 (file)
index 0000000..eea2069
--- /dev/null
@@ -0,0 +1,1491 @@
+/*** Euphoria Default theme - by Ben Rockwood ***/
+/***   E D J E    P A R T S                   ***/
+
+                       part {
+                                name, "background";
+                                mouse_events, 0;
+                                type,   IMAGE;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                        }
+                                        image {
+                                                normal, "border-scale.png";
+                                                border, 6 6 6 6;
+                                        }
+
+                                        fill {
+                                                smooth, 0;
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "title";
+                                type,   TEXT;
+                                //effect, SHADOW;
+                                mouse_events, 1;
+                               repeat_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 4;
+                                        }
+                                        rel2 {
+                                                relative, 1.0 0.0;
+                                                offset, -1 15;
+                                        }
+                                        color,  255 255 255 255;
+                                        text {
+                                                text, "Euphoria";
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 8;       /* Font Size */
+                                                align,   0.5 1.0;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "titlebar";
+                                type, RECT;
+                                mouse_events, 1;
+                               repeat_events, 1;
+
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 0.0;
+                                                offset, -1 16;
+                                        }
+
+                                        color, 0 0 0 0;
+                                }
+
+                        }
+
+                        part {
+                                name, "quit";
+                                type, IMAGE;
+                                mouse_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        rel1 {
+                                                relative, 1.0 0.0;
+                                                offset, -15 4;
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 0.0;
+                                                offset, -8 11;
+                                        }
+
+                                        image {
+                                                normal, "close_button.png";
+                                        }
+
+                                        fill {
+                                                smooth, 0;
+                                        }
+                                }
+                        }
+
+
+                        /* LCD Backdrop Image */
+                        part {
+                                name, "lcd_backdrop";
+                                type, IMAGE;
+                                mouse_events, 0;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        /* Part should fill from the far left, 20 pixels down */
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 5 16;
+                                        }
+
+                                        /* all the way to the far right, 40 pixels north of the bottom right corner */
+                                        rel2 {
+                                                relative, 1.0 0.0;
+                                                offset, -6 81;
+                                        }
+
+                                        image {
+                                                normal, "lcd_area.png";
+                                                border, 5 5 5 5;
+                                        }
+
+                                        fill {
+                                                smooth, 0;
+                                        }
+                                }
+                        }
+
+                        /* LCD Clipping Area - Invisible Rect */
+                        part {
+                                name, "lcd_clip";
+                                type, RECT;
+                                mouse_events, 0;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 5 5;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -5 -5;
+                                                to, "lcd_backdrop";
+                                        }
+                                        //color, 0 0 0 0;
+
+                                }
+                        }
+                        part {
+                                name, "artist_name";
+                                type,   TEXT;
+                                //effect, SOFT_OUTLINE;
+                                mouse_events, 0;
+                                clip_to, "lcd_clip";
+                                description {
+                                        state,  "default" 0.0;
+
+                                        /* Use the relative size of the LCD itself, then position with align */
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 8 0;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "lcd_backdrop";
+                                        }
+
+
+                                        color,  181 247 255 255;
+                                        text {
+                                                text, "Artist Name";       /* Text String */
+                                                font, "redensek";   /* Only font Vera works!  Use other and segv */
+                                                size, 12;       /* Font Size */
+                                                align, 0.0 0.1;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "album_name";
+                                type,   TEXT;
+                                //effect, SOFT_OUTLINE;
+                                mouse_events, 0;
+                                clip_to, "lcd_clip";
+                                description {
+                                        state,  "default" 0.0;
+
+                                        /* Use the relative size of the LCD itself, then position with align */
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 8 0;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "lcd_backdrop";
+                                        }
+
+
+                                        color,  181 247 255 255;
+                                        text {
+                                                text, "Album Name";       /* Text String */
+                                                font, "redensek";   /* Only font Vera works!  Use other and segv */
+                                                size, 12;       /* Font Size */
+                                                align, 0.0 0.3;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+                        part {
+                                name, "song_name";
+                                type,   TEXT;
+                                //effect, SOFT_OUTLINE;
+                                mouse_events, 0;
+                                clip_to, "lcd_clip";
+                                description {
+                                        state,  "default" 0.0;
+
+                                        /* Use the relative size of the LCD itself, then position with align */
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 8 0;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "lcd_backdrop";
+                                        }
+
+
+                                        color,  181 247 255 255;
+                                        text {
+                                                text, "Song Name";       /* Text String */
+                                                font, "redensek";   /* Only font Vera works!  Use other and segv */
+                                                size, 12;       /* Font Size */
+                                                align, 0.0 0.5;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+                        /* Time Counter  */
+                        part {
+                                name, "time_text";
+                                type,   TEXT;
+                                //effect, OUTLINE_SOFT_SHADOW;
+                                clip_to, "lcd_clip";
+                                mouse_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        /* Use the relative size of the LCD itself, then position with align */
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -9 -1;
+                                                to, "lcd_backdrop";
+                                        }
+
+
+                                        color,  181 247 255 255;
+                                        text {
+                                                text, "0:00";       /* Text String */
+                                                font, "micro";   /* Only font Vera works!  Use other and segv */
+                                                size, 26;       /* Font Size */
+                                                align, 1.0 1.0;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+
+                        /************* Buttons *******************************/
+                        /* Button Area */
+                        part {
+                                name, "button_background";
+                                type, IMAGE;
+                                mouse_events, 0;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 1.0;
+                                                offset, 1 5;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, 0 100;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                        image {
+                                                normal, "controls-back.png";
+                                                border, 5 5 5 5;
+                                        }
+
+
+                                        fill {
+                                                smooth, 0;
+                                        }
+                                }
+                        }
+
+
+                        /* Previous Button */
+                        part {
+                                name, "previous_button";
+                                mouse_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+                                        min, 56 40;
+                                        max, 56 40;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 5 5;
+                                                to, "button_background";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 0.0;
+                                                offset, 61 45;
+                                                to, "button_background";
+                                        }
+                                        image {
+                                                normal, "button-full-normal.png";
+                                        }
+                                }
+
+                                description {
+                                        state,  "clicked" 0.0;
+                                        min, 56 40;
+                                        max, 56 40;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 5 5;
+                                                to, "button_background";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 0.0;
+                                                offset, 61 45;
+                                                to, "button_background";
+                                        }
+
+                                        image {
+                                                normal, "button-full-clicked.png";
+                                        }
+                                }
+
+                        }
+                        /* Play Button */
+                        part {
+                                name, "play_button";
+                                mouse_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+                                        min, 56 40;
+                                        max, 56 40;
+                                        align, 0.5 0.0;
+
+                                        rel1 {
+                                                relative, 1.0 0.0;
+                                                offset, 0 0;
+                                                to, "previous_button";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, -0 -0;
+                                                to, "next_button";
+                                        }
+                                        image {
+                                                normal, "button-full-normal.png";
+                                        }
+                                }
+                                description {
+                                        state,  "clicked" 0.0;
+                                        min, 56 40;
+                                        max, 56 40;
+                                        align, 0.5 0.0;
+
+                                        rel1 {
+                                                relative, 1.0 0.0;
+                                                offset, 0 0;
+                                                to, "previous_button";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, -0 -0;
+                                                to, "next_button";
+                                        }
+
+                                        image {
+                                                normal, "button-full-clicked.png";
+                                        }
+                                }
+                                description {
+                                        state,  "blink" 0.0;
+                                        min, 56 40;
+                                        max, 56 40;
+                                        align, 0.5 0.0;
+
+                                        rel1 {
+                                                relative, 1.0 0.0;
+                                                offset, 0 0;
+                                                to, "previous_button";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, -0 -0;
+                                                to, "next_button";
+                                        }
+
+                                        image {
+                                                normal, "button-full-blinking.png";
+                                                tween,  "button-full-unblinking.png";
+                                        }
+                                }
+
+                        }
+
+                        /* Next Button */
+                        part {
+                                name, "next_button";
+                                mouse_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+                                        min, 56 40;
+                                        max, 56 40;
+
+                                        rel1 {
+                                                relative, 1.0 0.0;
+                                                offset, -61 5;
+                                                to, "button_background";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 0.0;
+                                                offset, -5 45;
+                                                to, "button_background";
+                                        }
+                                        image {
+                                                normal, "button-full-normal.png";
+                                        }
+                                }
+                                description {
+                                        state,  "clicked" 0.0;
+                                        min, 56 40;
+                                        max, 56 40;
+
+                                        rel1 {
+                                                relative, 1.0 0.0;
+                                                offset, -61 5;
+                                                to, "button_background";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 0.0;
+                                                offset, -5 45;
+                                                to, "button_background";
+                                        }
+                                        image {
+                                                normal, "button-full-clicked.png";
+                                        }
+                                }
+                        }
+
+                        /* Seekback Button */
+                        part {
+                                name, "seekback_button";
+                                mouse_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+                                        min, 56 40;
+                                        max, 56 40;
+                                        visible, 1;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 5 50;
+                                                to, "button_background";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 0.0;
+                                                offset, 61 90;
+                                                to, "button_background";
+                                        }
+
+                                        image {
+                                                normal, "button-full-normal.png";
+                                        }
+                                }
+                                description {
+                                        state,  "clicked" 0.0;
+                                        min, 56 40;
+                                        max, 56 40;
+                                        visible, 1;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 5 50;
+                                                to, "button_background";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 0.0;
+                                                offset, 61 90;
+                                                to, "button_background";
+                                        }
+
+                                        image {
+                                                normal, "button-full-clicked.png";
+                                        }
+                                }
+                        }
+
+                        /* Pause Button */
+                        part {
+                                name, "pause_button";
+                                mouse_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+                                        min, 56 40;
+                                        max, 56 40;
+                                        visible, 1;
+
+                                        rel1 {
+                                                relative, 1.0 0.0;
+                                                offset, 0 0;
+                                                to, "seekback_button";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, -0 -0;
+                                                to, "seekforward_button";
+                                        }
+
+                                        image {
+                                                normal, "button-3stage-unselected.png";
+                                                tween,  "button-3stage-fulldown.png";
+                                        }
+                                }
+                                description {
+                                        state,  "clicked" 0.0;
+                                        min, 56 40;
+                                        max, 56 40;
+                                        visible, 1;
+
+                                        rel1 {
+                                                relative, 1.0 0.0;
+                                                offset, 0 0;
+                                                to, "seekback_button";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, -0 -0;
+                                                to, "seekforward_button";
+                                        }
+
+                                        image {
+                                                normal, "button-3stage-selected.png";
+                                                tween, "button-3stage-fulldown.png";
+                                        }
+                                }
+                                description {
+                                        state,  "blink" 0.0;
+                                        min, 56 40;
+                                        max, 56 40;
+                                        visible, 1;
+
+                                        rel1 {
+                                                relative, 1.0 0.0;
+                                                offset, 0 0;
+                                                to, "seekback_button";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, -0 -0;
+                                                to, "seekforward_button";
+                                        }
+
+                                        image {
+                                                normal, "button-full-blinking.png";
+                                                tween,  "button-full-unblinking.png";
+                                        }
+                                }
+                        }
+                        /* Seekforward Button */
+                        part {
+                                name, "seekforward_button";
+                                mouse_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+                                        min, 56 40;
+                                        max, 56 40;
+                                        visible, 1;
+
+                                        rel1 {
+                                                relative, 1.0 0.0;
+                                                offset, -61 50;
+                                                to, "button_background";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 0.0;
+                                                offset, -5 90;
+                                                to, "button_background";
+                                        }
+
+                                        image {
+                                                normal, "button-full-normal.png";
+                                        }
+                                }
+                                description {
+                                        state,  "clicked" 0.0;
+                                        min, 56 40;
+                                        max, 56 40;
+                                        visible, 1;
+
+                                        rel1 {
+                                                relative, 1.0 0.0;
+                                                offset, -61 50;
+                                                to, "button_background";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 0.0;
+                                                offset, -5 90;
+                                                to, "button_background";
+                                        }
+
+                                        image {
+                                                normal, "button-full-clicked.png";
+                                        }
+                                }
+                        }
+
+                        /***************** BUTTON TEXT ELEMENTS *******************************/
+                        part {
+                                name, "previous_text";
+                                type, TEXT;
+                                //effect, SOFT_SHADOW;
+                                mouse_events, 0;                /* Does part accept mouse events? */
+                                //                      clip_to, "previous_button";     /* Clip anything outside of the specified object */
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "previous_button";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "previous_button";
+                                        }
+
+
+                                        color, 255 255 255 255;  /* Color of text */
+                                        color2, 0 0 255 255;    /* Does nothing for SOFT_SHADOW */
+                                        color3, 0 0 0 32;        /* Color of shadow */
+
+                                        text {
+                                                text, "Previous";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 6;        /* Font Size */
+                                                align,   0.5 0.5;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "play_text";
+                                type, TEXT;
+                                //effect, SOFT_SHADOW;
+                                mouse_events, 0;                /* Does part accept mouse events? */
+                                //                      clip_to, "play_button";     /* Clip anything outside of the specified object */
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "play_button";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "play_button";
+                                        }
+
+
+                                        color, 255 255 255 255;  /* Color of text */
+                                        color2, 0 0 255 255;    /* Does nothing for SOFT_SHADOW */
+                                        color3, 0 0 0 32;      /* Color of shadow */
+
+                                        text {
+                                                text, "Play";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 6;       /* Font Size */
+                                                align,   0.5 0.5;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "next_text";
+                                type, TEXT;
+                                //effect, SOFT_SHADOW;
+                                mouse_events, 0;                /* Does part accept mouse events? */
+                                //                      clip_to, "next_button";     /* Clip anything outside of the specified object */
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "next_button";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "next_button";
+                                        }
+
+
+                                        color, 255 255 255 255;  /* Color of text */
+                                        color2, 0 0 255 255;    /* Does nothing for SOFT_SHADOW */
+                                        color3, 0 0 0 32;      /* Color of shadow */
+
+                                        text {
+                                                text, "Next";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 6;       /* Font Size */
+                                                align,   0.5 0.5;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "seekback_text";
+                                type, TEXT;
+                                //effect, SOFT_SHADOW;
+                                mouse_events, 0;                /* Does part accept mouse events? */
+                                //                      clip_to, "seekback_button";     /* Clip anything outside of the specified object */
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "seekback_button";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "seekback_button";
+                                        }
+
+
+                                        color, 255 255 255 255;  /* Color of text */
+                                        color2, 0 0 255 255;    /* Does nothing for SOFT_SHADOW */
+                                        color3, 0 0 0 32;      /* Color of shadow */
+
+                                        text {
+                                                text, "<<";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 6;       /* Font Size */
+                                                align,   0.5 0.5;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "pause_text";
+                                type, TEXT;
+                                //effect, SOFT_SHADOW;
+                                mouse_events, 0;                /* Does part accept mouse events? */
+                                //                      clip_to, "pause_button";     /* Clip anything outside of the specified object */
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "pause_button";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "pause_button";
+                                        }
+
+
+                                        color, 255 255 255 255;  /* Color of text */
+                                        color2, 0 0 255 255;    /* Does nothing for SOFT_SHADOW */
+                                        color3, 0 0 0 32;      /* Color of shadow */
+
+                                        text {
+                                                text, "Pause";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 6;       /* Font Size */
+                                                align,   0.5 0.5;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "seekforward_text";
+                                type, TEXT;
+                                //effect, SOFT_SHADOW;
+                                mouse_events, 0;                /* Does part accept mouse events? */
+                                //                      clip_to, "seekforward_button";     /* Clip anything outside of the specified object */
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "seekforward_button";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "seekforward_button";
+                                        }
+
+
+                                        color, 255 255 255 255;  /* Color of text */
+                                        color2, 0 0 255 255;    /* Does nothing for SOFT_SHADOW */
+                                        color3, 0 0 0 32;      /* Color of shadow */
+
+                                        text {
+                                                text, ">>";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 6;       /* Font Size */
+                                                align,   0.5 0.5;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "repeat_toggle_disabled_img";
+                                type, IMAGE;
+                                mouse_events, 1;
+
+                                description {
+                                        state, "default" 0.0;
+                                        visible, 1;
+                                        min, 57 20;
+                                        max, 57 20;
+
+                                        rel1 {
+                                                relative, 0.0 1.0;
+                                                offset, 25 28;
+                                                to, "button_background";
+                                        }
+
+                                        rel2 {
+                                                relative, 0.25 1.0;
+                                                offset, 0 0;
+                                                to, "button_background";
+                                        }
+
+                                        image {
+                                                normal, "button-off.png";
+                                        }
+                                }
+
+                                description {
+                                        state, "disabled" 0.0;
+                                       inherit, "default" 0.0;
+                                        visible, 0;
+                                }
+                        }
+
+                        part {
+                                name, "repeat_toggle_enabled_img";
+
+                                description {
+                                        state, "default" 0.0;
+                                        min, 57 20;
+                                        max, 57 20;
+                                        visible, 0;
+
+                                        rel1 {
+                                                relative, 0.0 1.0;
+                                                offset, 25 28;
+                                                to, "button_background";
+                                        }
+
+                                        rel2 {
+                                                relative, 0.25 1.0;
+                                                offset, 0 0;
+                                                to, "button_background";
+                                        }
+
+                                        image {
+                                                normal, "button-on.png";
+                                        }
+                                }
+
+                                description {
+                                        state, "enabled" 0.0;
+                                       inherit: "default" 0.0;
+                                        visible, 1;
+                                }
+                        }
+                        part {
+                                name, "repeat_toggle_label";
+                                type, TEXT;
+                                mouse_events, 0;
+
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "repeat_toggle_disabled_img";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "repeat_toggle_disabled_img";
+                                        }
+
+                                        color, 0 0 0 255;
+
+                                        text {
+                                                text, "REPEAT";
+                                                font, "Vera";
+                                                size, 5;
+                                                align, 0.5 0.6;
+                                        }
+                                }
+                        }
+
+                        /********** Volume  Controls ***************************************/
+                        part {
+                                name, "vol_label";
+                                mouse_events, 0;
+                                description {
+                                        state,  "default" 0.0;
+                                        min, 21 20;
+                                        max, 21 20;
+
+                                        rel1 {
+                                                relative, 1.0 1.0;
+                                                offset, -21 4;
+                                                to, "button_background";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, 0 24;
+                                                to, "button_background";
+                                        }
+
+                                        image {
+                                                normal, "vol-label.png";
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "vol_label_text";
+                                type, TEXT;
+                                mouse_events, 0;                /* Does part accept mouse events? */
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "vol_label";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "vol_label";
+                                        }
+
+
+                                        color, 255 255 255 255;  /* Color of text */
+                                        color2, 0 0 255 255;    /* Does nothing for SOFT_SHADOW */
+                                        color3, 0 0 0 32;        /* Color of shadow */
+
+                                        text {
+                                                text, "VOL";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 5;        /* Font Size */
+                                                align,   0.5 0.6;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "vol_display";
+                                mouse_events, 0;
+                                description {
+                                        state,  "default" 0.0;
+                                        min, 23 20;
+                                        max, 23 20;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, -23 0;
+                                                to, "vol_label";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 0 0;
+                                                to, "vol_label";
+                                        }
+
+                                        image {
+                                                normal, "vol-display.png";
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "vol_display_text";
+                                type,   TEXT;
+                                //clip_to, "vol_display";
+                                description {
+                                        state,  "default" 0.0;
+
+                                        /* Use the relative size of the LCD itself, then position with align */
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "vol_display";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "vol_display";
+                                        }
+
+
+                                        color,  181 247 255 255;
+                                        text {
+                                                text, "00";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 8;       /* Font Size */
+                                                align, 0.5 0.6;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "vol_incr_button";
+                                mouse_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+                                        min, 25 20;
+                                        max, 25 20;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, -25 0;
+                                                to, "vol_display";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 0 0;
+                                                to, "vol_display";
+                                        }
+
+                                        image {
+                                                normal, "vol-plus.png";
+                                        }
+                                }
+                                description {
+                                        state,  "clicked" 0.0;
+                                        min, 25 20;
+                                        max, 25 20;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, -25 0;
+                                                to, "vol_display";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 0 0;
+                                                to, "vol_display";
+                                        }
+
+                                        image {
+                                                normal, "vol-plus-clicked.png";
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "vol_decr_button";
+                                mouse_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+                                        min, 29 20;
+                                        max, 29 20;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, -29 0;
+                                                to, "vol_incr_button";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 0 0;
+                                                to, "vol_incr_button";
+                                        }
+
+                                        image {
+                                                normal, "vol-minus.png";
+                                        }
+                                }
+                                description {
+                                        state,  "clicked" 0.0;
+                                        min, 29 20;
+                                        max, 29 20;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, -29 0;
+                                                to, "vol_incr_button";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 0 0;
+                                                to, "vol_incr_button";
+                                        }
+
+                                        image {
+                                                normal, "vol-minus-clicked.png";
+                                        }
+                                }
+                        }
+
+                        /************ PLAYLIST **************************************************/
+
+                        /* LCD Playlist Backdrop Image */
+                        part {
+                                name, "playlist_backdrop";
+                                type, IMAGE;
+                                mouse_events, 0;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 5 210;
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -6 -24;
+                                        }
+
+                                        image {
+                                                normal, "lcd_area.png";
+                                                border, 5 5 5 5;
+                                        }
+
+                                        fill {
+                                                smooth, 0;
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "playlist";
+                                type, RECT;
+                                mouse_events, 1;
+
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 8 5;
+                                                to, "playlist_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -6 -6;
+                                                to, "playlist_backdrop";
+                                        }
+                                        color, 0 0 0 0;
+                                }
+                        }
+
+                        /********* PLAYLIST CONTROLS ****************************/
+                        /* Button Area */
+                        part {
+                                name, "controls_background";
+                                type, IMAGE;
+                                mouse_events, 0;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 1.0;
+                                                offset, 0 1;
+                                                to, "playlist_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -6 -3;
+                                                //to, "playlist_backdrop";
+                                        }
+
+                                        image {
+                                                normal, "controls-back.png";
+                                                border, 5 5 5 5;
+                                        }
+
+                                        fill {
+                                                smooth, 0;
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "add_button";
+                                type, IMAGE;
+                                mouse_events, 1;
+
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 1.0;
+                                                offset, 2 2;
+                                                to, "playlist_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 56 20;
+                                                to, "playlist_backdrop";
+                                        }
+
+
+                                        image {
+                                                normal, "function-button-normal.png";
+                                                border, 5 5 5 5;
+                                        }
+                                }
+                                description {
+                                        state, "clicked" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 1.0;
+                                                offset, 2 2;
+                                                to, "playlist_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 56 20;
+                                                to, "playlist_backdrop";
+                                        }
+
+                                        image {
+                                                normal, "function-button-clicked.png";
+                                                border, 5 5 5 5;
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "del_button";
+                                type, IMAGE;
+                                mouse_events, 1;
+
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 1.0;
+                                                offset, 67 2;
+                                                to, "playlist_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 121 20;
+                                                to, "playlist_backdrop";
+                                        }
+
+                                        image {
+                                                normal, "function-button-normal.png";
+                                                border, 5 5 5 5;
+                                        }
+                                }
+                                description {
+                                        state, "clicked" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 1.0;
+                                                offset, 67 2;
+                                                to, "playlist_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 121 20;
+                                                to, "playlist_backdrop";
+                                        }
+
+                                        image {
+                                                normal, "function-button-clicked.png";
+                                                border, 5 5 5 5;
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "edit_button";
+                                type, IMAGE;
+                                mouse_events, 1;
+
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 1.0;
+                                                offset, 132 2;
+                                                to, "playlist_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 188 20;
+                                                to, "playlist_backdrop";
+                                        }
+
+                                        image {
+                                                normal, "function-button-normal.png";
+                                                border, 5 5 5 5;
+                                        }
+                                }
+                                description {
+                                        state, "clicked" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 1.0;
+                                                offset, 132 2;
+                                                to, "playlist_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 188 20;
+                                                to, "playlist_backdrop";
+                                        }
+
+                                        image {
+                                                normal, "function-button-clicked.png";
+                                                border, 5 5 5 5;
+                                        }
+                                }
+                        }
+
+                        /*** CONTROL TEXT ***/
+
+                        part {
+                                name, "add_text";
+                                type, TEXT;
+                                mouse_events, 0;
+
+                                description {
+                                        state, "default" 0.0;
+                                        visible, 1;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "add_button";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "add_button";
+                                        }
+
+                                        text {
+                                                text, "Add";
+                                                font, "Vera";
+                                                size, 6;
+                                                align, 0.5 0.7;
+                                        }
+
+                                        color, 255 255 255 255;
+                                }
+                        }
+
+                        part {
+                                name, "del_text";
+                                type, TEXT;
+                                mouse_events, 0;
+
+                                description {
+                                        state, "default" 0.0;
+                                        visible, 1;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "del_button";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "del_button";
+                                        }
+
+                                        text {
+                                                text, "Delete";
+                                                font, "Vera";
+                                                size, 6;
+                                                align, 0.5 0.7;
+                                        }
+
+                                        color, 255 255 255 255;
+                                }
+                        }
+
+                        part {
+                                name, "edit_text";
+                                type, TEXT;
+                                mouse_events, 0;
+
+                                description {
+                                        state, "default" 0.0;
+                                        visible, 1;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "edit_button";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "edit_button";
+                                        }
+
+                                        text {
+                                                text, "Edit";
+                                                font, "Vera";
+                                                size, 6;
+                                                align, 0.5 0.7;
+                                        }
+
+                                        color, 255 255 255 255;
+                                }
+                        }
+
+
+/************ FIN ***************/
diff --git a/data/themes/default/default_playlist_parts.edc b/data/themes/default/default_playlist_parts.edc
new file mode 100644 (file)
index 0000000..ea3896c
--- /dev/null
@@ -0,0 +1,67 @@
+/*** Euphoria Default theme - by Ben Rockwood ***/
+/***   Playlist Item Parts                    ***/
+
+
+                        part {  
+                                name, "clip";
+                                type, RECT;
+
+                                description {
+                                        state, "default" 0.0;
+                                }
+                        }       
+                                
+                        part {
+                                name, "background";
+                                type, RECT;
+                                clip_to, "clip";
+                                
+                                description {
+                                        state, "default" 0.0;
+                                        color, 0 0 0 0;
+                                }
+                        
+                                description {
+                                        state, "selected" 0.0;
+                                        color, 73 104 111 128;
+                                }
+                        }
+                
+                        part {
+                                name, "title";
+                                type, TEXT;
+                                mouse_events, 1;
+                                clip_to, "clip";
+
+                                description {
+                                        color, 181 247 255 255;
+                                        align, 0.0 0.0;
+                                        max, 150 12;
+
+                                        text {
+                                                text, "Dummy";
+                                                font, "redensek";
+                                                size, 12;
+                                                align, 0.0 0.0;
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "length";
+                                type, TEXT;
+                                mouse_events, 1;
+                                clip_to, "clip";
+
+                                description {
+                                        color, 181 247 255 255;
+
+                                        text {
+                                                text, "2:55";
+                                                font, "redensek";
+                                                size, 12;
+                                                align, 1.0 0.0;
+                                        }
+                                }
+                        }
+
diff --git a/data/themes/default/default_playlist_progs.edc b/data/themes/default/default_playlist_progs.edc
new file mode 100644 (file)
index 0000000..3dbadd9
--- /dev/null
@@ -0,0 +1,49 @@
+/*** Euphoria Default theme - by Ben Rockwood ***/
+/***    Playlist Item Programs                ***/
+
+                        program {
+                                name, "selected_mouse";
+                                signal, "mouse,clicked,1";
+                                source, "*";
+                                action, SIGNAL_EMIT "PLAYLIST_ITEM_SELECTED" "";
+                        }
+
+                        program {
+                                name, "selected";
+                                signal, "PLAYLIST_ITEM_SELECTED";
+                                source, "";
+                                action, STATE_SET "selected" 0.0;
+                                transition, LINEAR 0.2;
+                                target, "background";
+                        }
+
+                        program {
+                                name, "unselected";
+                                signal, "PLAYLIST_ITEM_UNSELECTED";
+                                source, "";
+                                action, STATE_SET "default" 0.0;
+                                transition, LINEAR 0.2;
+                                target, "background";
+                        }
+
+                        program {
+                                name, "dbl_clicked";
+                                signal, "mouse,down,1,double";
+                                source, "*";
+                                action, SIGNAL_EMIT "PLAYLIST_ITEM_PLAY" "";
+                        }
+
+                        program {
+                                name, "scroll_up";
+                                signal, "mouse,wheel,0,-1";
+                                source, "*";
+                                action, SIGNAL_EMIT "PLAYLIST_SCROLL_UP" "";
+                        }
+
+                        program {
+                                name, "scroll_down";
+                                signal, "mouse,wheel,0,1";
+                                source, "*";
+                                action, SIGNAL_EMIT "PLAYLIST_SCROLL_DOWN" "";
+                        }
+
diff --git a/data/themes/default/default_progs.edc b/data/themes/default/default_progs.edc
new file mode 100644 (file)
index 0000000..d8e863e
--- /dev/null
@@ -0,0 +1,435 @@
+/*** Euphoria Default theme - by Ben Rockwood ***/
+/***   E D J E         P R O G R A M S           ***/
+
+                        /* Quit Handlers */
+                        program {
+                                name, "quit_button_in";
+                                signal, "mouse,in";
+                                source, "quit";
+                                action, STATE_SET "active" 0.0;
+                                target, "quit";
+                                transition, LINEAR 0.5;
+                        }
+                        program {
+                                name, "quit_button_out";
+                                signal, "mouse,out";
+                                source, "quit";
+                                action, STATE_SET "default" 0.0;
+                                target, "quit";
+                                transition, LINEAR 0.5;
+                        }
+                        program {
+                                name, "quit_button_click";
+                                signal, "mouse,clicked,1";
+                                source, "quit";
+                                action, SIGNAL_EMIT "close" "quit";
+                        }
+
+                        /* switch to "small" mode */
+                        program {
+                                name, "titlebar_dbl_click";
+                                signal, "mouse,down,1,double";
+                                source, "titlebar";
+                                action, SIGNAL_EMIT "SWITCH_GROUP" "euphoria_small";
+                        }
+
+                        /* Previous File */
+                        program {
+                                name,       "previous_click";
+                                signal,     "mouse,down,1";
+                                source,     "previous_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "previous_button";
+                        }
+                        program {
+                                name,       "previous_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "previous_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "previous_button";
+                        }
+
+                        program {
+                                name,       "previous_click_emission";
+                                signal,     "mouse,up,1";
+                                source,     "previous_button";
+                                /* Emit signal to handler "previous file", from part/sender "previous_button" */
+                                /* Catch with the following Edje code in your app */
+                                /* edje_object_signal_callback_add(edje, "playback.prev", "previous_button", function) */
+                                action,     SIGNAL_EMIT "playback.prev" "previous_button";
+                        }
+
+                        program {
+                                name, "time_text_click";
+                                signal, "mouse,up,1";
+                                source, "time_text";
+                                action, SIGNAL_EMIT "TOGGLE_TIME_DISPLAY_MODE" "time_text";
+                        }
+
+                        /* Seek Backwards */
+
+                        program {
+                                name,       "seekback_click";
+                                signal,     "mouse,down,1";
+                                source,     "seekback_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "seekback_button";
+                        }
+                        program {
+                                name,       "seekback_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "seekback_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "seekback_button";
+                        }
+
+                        program {
+                                name,       "seekback_start";
+                                signal,     "mouse,down,1";
+                                source,     "seekback_button";
+                                action,     SIGNAL_EMIT "SEEK_BACK_START" "seekback_button";
+                        }
+
+                        program {
+                                name,       "seekback_stop";
+                                signal,     "mouse,up,1";
+                                source,     "seekback_button";
+                                action,     SIGNAL_EMIT "SEEK_BACK_STOP" "seekback_button";
+                        }
+
+
+
+                        /* Play */
+                        program {
+                                name,       "play_click";
+                                signal,     "mouse,down,1";
+                                source,     "play_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "play_button";
+                                //after,      "play_blink";
+                        }
+
+                        program {
+                                name,       "play_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "play_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "play_button";
+                                //after,      "pause_unblink";
+                        }
+
+                        /* Stop Pause Blinker */
+                        /* When using the action STOP, the target is the program to be stopped */
+                        program {
+                                name,       "pause_unblink";
+                                source,     "*";
+                                action,     ACTION_STOP;
+                                target,     "pause_blink";
+                                after,      "play_blink";
+                        }
+
+
+                        /* Loop Play Blinker */
+                        program {
+                                name,       "play_blink";
+                                source,     "*";
+                                action,     STATE_SET "blink" 0.0;
+                                transition, LINEAR 1.0;
+                                target,     "play_button";
+                                after,      "play_blink";
+                        }
+
+                        program {
+                                name,       "play_click_emission";
+                                signal,     "mouse,up,1";
+                                source,     "play_button";
+                                action,     SIGNAL_EMIT "playback.play" "play_button";
+                        }
+
+                        /**************** Pause ****************/
+                        program {
+                                name,       "pause_click";
+                                signal,     "mouse,down,1";
+                                source,     "pause_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.2;
+                                target,     "pause_button";
+                                //after,            "pause_blink";
+                        }
+                        program {
+                                name,       "pause_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "pause_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.2;
+                                target,     "pause_button";
+                                //after,      "play_unblink";
+                        }
+
+                        program {
+                                name,       "play_unblink";
+                                source,     "*";
+                                action,     ACTION_STOP;
+                                target,     "play_blink";
+                                after,      "pause_blink";
+                        }
+
+                        program {
+                                name,       "pause_blink";
+                                source,     "*";
+                                action,     STATE_SET "blink" 0.0;
+                                transition, LINEAR 1.0;
+                                target,     "pause_button";
+                                after,      "pause_blink";
+                        }
+
+                        program {
+                                name,       "pause_click_emission";
+                                signal,     "mouse,up,1";
+                                source,     "pause_button";
+                                action,     SIGNAL_EMIT "playback.pause" "pause_button";
+                        }
+
+                        /**************** Seek Forward ********************/
+                        program {
+                                name,       "seekforward_click";
+                                signal,     "mouse,down,1";
+                                source,     "seekforward_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "seekforward_button";
+                        }
+                        program {
+                                name,       "seekforward_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "seekforward_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "seekforward_button";
+                        }
+
+                        program {
+                                name,       "seekforward_start";
+                                signal,     "mouse,down,1";
+                                source,     "seekforward_button";
+                                action,     SIGNAL_EMIT "SEEK_FORWARD_START" "seekforward_button";
+                        }
+
+                        program {
+                                name,       "seekforward_stop";
+                                signal,     "mouse,up,1";
+                                source,     "seekforward_button";
+                                action,     SIGNAL_EMIT "SEEK_FORWARD_STOP" "seekforward_button";
+                        }
+
+
+
+                        /* Next File */
+                        program {
+                                name,       "next_click";
+                                signal,     "mouse,down,1";
+                                source,     "next_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "next_button";
+                        }
+                        program {
+                                name,       "next_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "next_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "next_button";
+                        }
+                        program {
+                                name,       "next_click_emission";
+                                signal,     "mouse,up,1";
+                                source,     "next_button";
+                                action,     SIGNAL_EMIT "playback.next" "next_button";
+                        }
+
+                        /* Volume Button Proggies */
+                        /* Raise Volume */
+                        program {
+                                name,       "volplus_click";
+                                signal,     "mouse,down,1";
+                                source,     "vol_incr_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "vol_incr_button";
+                        }
+                        program {
+                                name,       "volplus_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "vol_incr_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "vol_incr_button";
+                        }
+
+                        program {
+                                name,       "vol_incr_sig_wheel1";
+                                signal,     "mouse,wheel,0,-1";
+                                source,     "vol_incr_button";
+                                action,     SIGNAL_EMIT "VOL_INCR" "vol_incr_button";
+                        }
+
+                        program {
+                                name,       "vol_incr_sig_wheel2";
+                                signal,     "mouse,wheel,0,1";
+                                source,     "vol_incr_button";
+                                action,     SIGNAL_EMIT "VOL_DECR" "vol_decr_button";
+                        }
+
+
+                        /** NOTES: All programs MUST have AT LEAST, a NAME, SOURCE (even if "*";), and an ACTION **/
+
+                        program {
+                                name,       "vol_incr_sig";
+                                //signal,           "*";
+                                //source,     "volplus_click";
+                                signal,     "mouse,up,1";
+                                source,     "vol_incr_button";
+                                action,     SIGNAL_EMIT "VOL_INCR" "vol_incr_button";
+                        }
+
+                        /* Lower Volume */
+                        program {
+                                name,       "volminus_click";
+                                signal,     "mouse,down,1";
+                                source,     "vol_decr_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "vol_decr_button";
+                        }
+                        program {
+                                name,       "volminus_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "vol_decr_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "vol_decr_button";
+                        }
+                        program {
+                                name,       "vol_decr_sig";
+                                signal,     "mouse,up,1";
+                                source,     "vol_decr_button";
+                                action,     SIGNAL_EMIT "VOL_DECR" "vol_decr_button";
+                        }
+
+                        program {
+                                name,       "vol_decr_sig_wheel1";
+                                signal,     "mouse,wheel,0,-1";
+                                source,     "vol_decr_button";
+                                action,     SIGNAL_EMIT "VOL_INCR" "vol_incr_button";
+                        }
+
+                        program {
+                                name,       "vol_decr_sig_wheel2";
+                                signal,     "mouse,wheel,0,1";
+                                source,     "vol_decr_button";
+                                action,     SIGNAL_EMIT "VOL_DECR" "vol_decr_button";
+                        }
+
+                        program {
+                                name, "repeat_toggle_activated";
+                                signal, "mouse,clicked,1";
+                                source, "repeat_toggle_disabled_img";
+                                action, STATE_SET "disabled" 0.0;
+                                target, "repeat_toggle_disabled_img";
+                                action, STATE_SET "enabled" 0.0;
+                                target, "repeat_toggle_enabled_img";
+                                after, "repeat_toggle_signal";
+                        }
+
+                        program {
+                                name, "repeat_toggle_deactivated";
+                                signal, "mouse,clicked,1";
+                                source, "repeat_toggle_enabled_img";
+                                action, STATE_SET "default" 0.0;
+                                target, "repeat_toggle_enabled_img";
+                                action, STATE_SET "default" 0.0;
+                                target, "repeat_toggle_disabled_img";
+                                after, "repeat_toggle_signal";
+                        }
+
+                        program {
+                                name, "repeat_toggle_signal";
+                                action, SIGNAL_EMIT "TOGGLE_REPEAT_MODE" "repeat_mode";
+                        }
+
+                        /** Playlist control programs **/
+                        program {
+                                name,       "add_click";
+                                signal,     "mouse,down,1";
+                                source,     "add_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "add_button";
+                        }
+                        program {
+                                name,       "add_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "add_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "add_button";
+                        }
+
+                        program {
+                                name,       "add_signal";
+                                signal,     "mouse,up,1";
+                                source,     "add_button";
+                                action,     SIGNAL_EMIT "file_dialog.open" "add_button";
+                        }
+
+
+                        program {
+                                name,       "del_click";
+                                signal,     "mouse,down,1";
+                                source,     "del_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "del_button";
+                        }
+                        program {
+                                name,       "del_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "del_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "del_button";
+                        }
+
+                        program {
+                                name,       "del_signal";
+                                signal,     "mouse,up,1";
+                                source,     "del_button";
+                                action,     SIGNAL_EMIT "PLAYLIST_DEL" "del_button";
+                        }
+
+                        program {
+                                name,       "edit_click";
+                                signal,     "mouse,down,1";
+                                source,     "edit_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "edit_button";
+                        }
+                        program {
+                                name,       "edit_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "edit_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "edit_button";
+                        }
+
+/********** FIN *************/
+
diff --git a/data/themes/default/default_small_parts.edc b/data/themes/default/default_small_parts.edc
new file mode 100644 (file)
index 0000000..b65c7a4
--- /dev/null
@@ -0,0 +1,742 @@
+/*** Minimized Interface for Default theme - by digitalfallout ***/
+                        part {
+                                name, "background";
+                                mouse_events, 1;
+                               repeat_events, 1;
+                                type, IMAGE;
+
+                                description {
+                                        state, "default" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                        }
+                                        image {
+                                                normal, "border-scale.png";
+                                                border, 6 6 6 6;
+                                        }
+                                        fill {
+                                                smooth, 0;
+                                        }
+                                }
+                        }
+                        part {
+                                name, "title";
+                                type,   TEXT;
+                                mouse_events, 1;
+                               repeat_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -4 -4;
+                                        }
+                                        color,  255 255 255 255;
+                                        text {
+                                                text, "Euphoria";
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 6;       /* Font Size */
+                                                align,   1.0 1.0;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+                        /***** START LCD AREA *****/
+                        /* LCD Backdrop Image */
+                        part {
+                                name, "lcd_backdrop";
+                                type, IMAGE;
+                                mouse_events, 0;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        /* Part should fill from the far left, 20 pixels down */
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 4 4;
+                                        }
+
+                                        /* all the way to the far right, 40 pixels north of the bottom right corner */
+                                        rel2 {
+                                                relative, 1.0 0.0;
+                                                offset, -6 35;
+                                        }
+
+                                        image {
+                                                normal, "lcd_area.png";
+                                                border, 5 5 5 5;
+                                        }
+
+                                        fill {
+                                                smooth, 0;
+                                        }
+                                }
+                        }
+                        /* LCD Clipping Area - Invisible Rect */
+                        part {
+                                name, "lcd_clip";
+                                type, RECT;
+                                mouse_events, 0;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 5 5;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -5 -5;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                }
+                        }
+
+                        part {
+                                name, "artist_name";
+                                type,   TEXT;
+                                mouse_events, 0;
+                                clip_to, "lcd_clip";
+                                description {
+                                        state,  "default" 0.0;
+
+                                        /* Use the relative size of the LCD itself, then position with align */
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 8 0;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "lcd_backdrop";
+                                        }
+
+
+                                        color,  181 247 255 255;
+                                        text {
+                                                text, "Artist Name";       /* Text String */
+                                                font, "redensek";   /* Only font Vera works!  Use other and segv */
+                                                size, 12;       /* Font Size */
+                                                align, 0.0 0.1;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "song_name";
+                                type,   TEXT;
+                                mouse_events, 0;
+                                clip_to, "lcd_clip";
+                                description {
+                                        state,  "default" 0.0;
+
+                                        /* Use the relative size of the LCD itself, then position with align */
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 8 5;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "lcd_backdrop";
+                                        }
+
+
+                                        color,  181 247 255 255;
+                                        text {
+                                                text, "Song Name";       /* Text String */
+                                                font, "redensek";   /* Only font Vera works!  Use other and segv */
+                                                size, 12;       /* Font Size */
+                                                align, 0.0 0.5;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+                        /* Time Counter  */
+                        part {
+                                name, "time_text";
+                                type,   TEXT;
+                                clip_to, "lcd_clip";
+                                mouse_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        /* Use the relative size of the LCD itself, then position with align */
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -9 -1;
+                                                to, "lcd_backdrop";
+                                        }
+
+
+                                        color,  181 247 255 255;
+                                        text {
+                                                text, "0:00";       /* Text String */
+                                                font, "micro";   /* Only font Vera works!  Use other and segv */
+                                                size, 32;       /* Font Size */
+                                                align, 1.0 1.0;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+                        /***** END LCD AREA *****/
+
+                        /***** START BUTTON AREA *****/
+
+                        /***** start previous button *****/
+                        part {
+                                name, "previous_button";
+                                mouse_events, 1;
+                                type, IMAGE;
+                                description {
+                                        state, "default" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset,  5 37;
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 30 -5;
+                                        }
+                                        image {
+                                                normal, "button-small-normal.png";
+                                        }
+                                }
+                                description {
+                                        state, "clicked" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 5 37;
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 30 -5;
+                                        }
+                                        image {
+                                                normal, "button-small-clicked.png";
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "previous_text";
+                                type, TEXT;
+                                mouse_events, 0;                /* Does part accept mouse events? */
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "previous_button";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "previous_button";
+                                        }
+
+
+                                        color, 255 255 255 255;  /* Color of text */
+                                        color2, 0 0 255 255;    /* Does nothing for SOFT_SHADOW */
+                                        color3, 0 0 0 32;      /* Color of shadow */
+
+                                        text {
+                                                text, "Back";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 6;       /* Font Size */
+                                                align,   0.5 0.5;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+                        /***** stop previous button *****/
+                        /***** start play button *****/
+                        part {
+                                name, "play_button";
+                                mouse_events, 1;
+                                type, IMAGE;
+                                description {
+                                        state, "default" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset,  35 37;
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 60 -5;
+                                        }
+                                        image {
+                                                normal, "button-small-normal.png";
+                                        }
+                                }
+                                description {
+                                        state, "clicked" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 35 37;
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 60 -5;
+                                        }
+                                        image {
+                                                normal, "button-small-clicked.png";
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "stop_text";
+                                type, TEXT;
+                                mouse_events, 0;                /* Does part accept mouse events? */
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "play_button";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "play_button";
+                                        }
+
+
+                                        color, 255 255 255 255;  /* Color of text */
+                                        color2, 0 0 255 255;    /* Does nothing for SOFT_SHADOW */
+                                        color3, 0 0 0 32;      /* Color of shadow */
+
+                                        text {
+                                                text, "Play";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 6;       /* Font Size */
+                                                align,   0.5 0.5;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+                        /***** stop play button  *****/
+                        /***** start pause button *****/
+                        part {
+                                name, "pause_button";
+                                mouse_events, 1;
+                                type, IMAGE;
+                                description {
+                                        state, "default" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset,  65 37;
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 90 -5;
+                                        }
+                                        image {
+                                                normal, "button-small-normal.png";
+                                        }
+                                }
+                                description {
+                                        state, "clicked" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 65 37;
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 90 -5;
+                                        }
+                                        image {
+                                                normal, "button-small-clicked.png";
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "pause_text";
+                                type, TEXT;
+                                mouse_events, 0;                /* Does part accept mouse events? */
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "pause_button";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "pause_button";
+                                        }
+
+
+                                        color, 255 255 255 255;  /* Color of text */
+                                        color2, 0 0 255 255;    /* Does nothing for SOFT_SHADOW */
+                                        color3, 0 0 0 32;      /* Color of shadow */
+
+                                        text {
+                                                text, "Stop";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 6;       /* Font Size */
+                                                align,   0.5 0.5;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+                        /***** stop next button *****/
+                        /***** start next button *****/
+                        part {
+                                name, "next_button";
+                                mouse_events, 1;
+                                type, IMAGE;
+                                description {
+                                        state, "default" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset,  95 37;
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 120 -5;
+                                        }
+                                        image {
+                                                normal, "button-small-normal.png";
+                                        }
+                                }
+                                description {
+                                        state, "clicked" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 95 37;
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 120 -5;
+                                        }
+                                        image {
+                                                normal, "button-small-clicked.png";
+                                        }
+                                }
+                       }
+
+                        part {
+                                name, "next_text";
+                                type, TEXT;
+                                mouse_events, 0;                /* Does part accept mouse events? */
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "next_button";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "next_button";
+                                        }
+
+
+                                        color, 255 255 255 255;  /* Color of text */
+                                        color2, 0 0 255 255;    /* Does nothing for SOFT_SHADOW */
+                                        color3, 0 0 0 32;      /* Color of shadow */
+
+                                        text {
+                                                text, "Next";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 6;       /* Font Size */
+                                                align,   0.5 0.5;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+                        /***** stop next button *****/
+                        /***** start quit button *****/
+                        part {
+                                name, "quit_button";
+                                mouse_events, 1;
+                                type, IMAGE;
+                                description {
+                                        state, "default" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset,  125 37;
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 150 -5;
+                                        }
+                                        image {
+                                                normal, "button-small-normal.png";
+                                        }
+                                }
+                                description {
+                                        state, "clicked" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 125 37;
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 150 -5;
+                                        }
+                                        image {
+                                                normal, "button-small-clicked.png";
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "quit_text";
+                                type, TEXT;
+                                mouse_events, 0;                /* Does part accept mouse events? */
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "quit_button";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "quit_button";
+                                        }
+
+
+                                        color, 255 255 255 255;  /* Color of text */
+                                        color2, 0 0 255 255;    /* Does nothing for SOFT_SHADOW */
+                                        color3, 0 0 0 32;      /* Color of shadow */
+
+                                        text {
+                                                text, "Quit";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 6;       /* Font Size */
+                                                align,   0.5 0.5;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+                        /***** stop exit button *****/
+                        /********** Volume  Controls ***************************************/
+                        part {
+                                name, "vol_label";
+                                mouse_events, 0;
+                                description {
+                                        state,  "default" 0.0;
+                                        min, 21 20;
+                                        max, 21 20;
+
+                                        rel1 {
+                                                relative, 1.0 1.0;
+                                                offset, -115 -50;
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, 0 24;
+                                        }
+
+                                        image {
+                                                normal, "vol-label.png";
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "vol_label_text";
+                                type, TEXT;
+                                mouse_events, 0;                /* Does part accept mouse events? */
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "vol_label";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "vol_label";
+                                        }
+
+
+                                        color, 255 255 255 255;  /* Color of text */
+                                        color2, 0 0 255 255;    /* Does nothing for SOFT_SHADOW */
+                                        color3, 0 0 0 32;        /* Color of shadow */
+
+                                        text {
+                                                text, "VOL";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 5;        /* Font Size */
+                                                align,   0.5 0.6;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+                        part {
+                                name, "vol_display";
+                                mouse_events, 0;
+                                description {
+                                        state,  "default" 0.0;
+                                        min, 23 20;
+                                        max, 23 20;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, -23 0;
+                                                to, "vol_label";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 0 0;
+                                                to, "vol_label";
+                                        }
+
+                                        image {
+                                                normal, "vol-display.png";
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "vol_display_text";
+                                type,   TEXT;
+                                //clip_to, "vol_display";
+                                description {
+                                        state,  "default" 0.0;
+
+                                        /* Use the relative size of the LCD itself, then position with align */
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "vol_display";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "vol_display";
+                                        }
+
+
+                                        color,  181 247 255 255;
+                                        text {
+                                                text, "00";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 8;       /* Font Size */
+                                                align, 0.5 0.6;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+
+                        part {
+                                name, "vol_incr_button";
+                                mouse_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+                                        min, 25 20;
+                                        max, 25 20;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, -25 0;
+                                                to, "vol_display";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 0 0;
+                                                to, "vol_display";
+                                        }
+
+                                        image {
+                                                normal, "vol-plus.png";
+                                        }
+                                }
+                                description {
+                                        state,  "clicked" 0.0;
+                                        min, 25 20;
+                                        max, 25 20;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, -25 0;
+                                                to, "vol_display";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 0 0;
+                                                to, "vol_display";
+                                        }
+
+                                        image {
+                                                normal, "vol-plus-clicked.png";
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "vol_decr_button";
+                                mouse_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+                                        min, 29 20;
+                                        max, 29 20;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, -29 0;
+                                                to, "vol_incr_button";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 0 0;
+                                                to, "vol_incr_button";
+                                        }
+
+                                        image {
+                                                normal, "vol-minus.png";
+                                        }
+                                }
+                                description {
+                                        state,  "clicked" 0.0;
+                                        min, 29 20;
+                                        max, 29 20;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, -29 0;
+                                                to, "vol_incr_button";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 0 0;
+                                                to, "vol_incr_button";
+                                        }
+
+                                        image {
+                                                normal, "vol-minus-clicked.png";
+                                        }
+                                }
+                        }
+
+/************** EOF ********************/
diff --git a/data/themes/default/default_small_progs.edc b/data/themes/default/default_small_progs.edc
new file mode 100644 (file)
index 0000000..5a05116
--- /dev/null
@@ -0,0 +1,219 @@
+/*** Minimized Interface for Default theme - by digitalfallout ***/
+
+                        /* Previous */
+                        program {
+                                name,       "previous_click";
+                                signal,     "mouse,down,1";
+                                source,     "previous_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "previous_button";
+                        }
+
+                        program {
+                                name,       "previous_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "previous_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "previous_button";
+                        }
+                        program {
+                                name,       "previous_click_emission";
+                                signal,     "mouse,up,1";
+                                source,     "previous_button";
+                                action,     SIGNAL_EMIT "playback.previous" "previous_button";
+                        }
+
+                        /* Play */
+                        program {
+                                name,       "play_click";
+                                signal,     "mouse,down,1";
+                                source,     "play_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "play_button";
+                        }
+
+                        program {
+                                name,       "play_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "play_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "play_button";
+                        }
+                        program {
+                                name,      "play_click_emission";
+                                signal,    "mouse,up,1";
+                                source,    "play_button";
+                                action,    SIGNAL_EMIT "playback.play" "play_button";
+                        }
+
+                        /* Pause */
+                        program {
+                                name,       "pause_click";
+                                signal,     "mouse,down,1";
+                                source,     "pause_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "pause_button";
+                        }
+
+                        program {
+                                name,       "pause_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "pause_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "pause_button";
+                        }
+                        program {
+                                name,      "pause_click_emission";
+                                signal,    "mouse,up,1";
+                                source,    "pause_button";
+                                action,    SIGNAL_EMIT "PAUSE" "pause_button";
+                        }
+
+                        /* Next */
+                        program {
+                                name,       "next_click";
+                                signal,     "mouse,down,1";
+                                source,     "next_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "next_button";
+                        }
+
+                        program {
+                                name,       "next_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "next_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "next_button";
+                        }
+                        program {
+                                name,       "next_click_emission";
+                                signal,     "mouse,up,1";
+                                source,     "next_button";
+                                action,     SIGNAL_EMIT "playback.next" "next_button";
+                        }
+
+
+                        /* Quit */
+                        program {
+                                name,       "quit_click";
+                                signal,     "mouse,down,1";
+                                source,     "quit_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "quit_button";
+                        }
+
+                        program {
+                                name,       "quit_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "quit_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "quit_button";
+                        }
+                        program {
+                                name,       "quit_click_emission";
+                                signal,     "mouse,up,1";
+                                source,     "quit_button";
+                                action,     SIGNAL_EMIT "close" "quit";
+                        }
+                        /* Volume Button Proggies */
+                        /* Raise Volume */
+                        program {
+                                name,       "volplus_click";
+                                signal,     "mouse,down,1";
+                                source,     "vol_incr_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "vol_incr_button";
+                        }
+                        program {
+                                name,       "volplus_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "vol_incr_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "vol_incr_button";
+                        }
+
+                        program {
+                                name,       "vol_incr_sig_wheel1";
+                                signal,     "mouse,wheel,0,-1";
+                                source,     "vol_incr_button";
+                                action,     SIGNAL_EMIT "VOL_INCR" "vol_incr_button";
+                        }
+
+                        program {
+                                name,       "vol_incr_sig_wheel2";
+                                signal,     "mouse,wheel,0,1";
+                                source,     "vol_incr_button";
+                                action,     SIGNAL_EMIT "VOL_DECR" "vol_decr_button";
+                        }
+
+
+                        /** NOTES: All programs MUST have AT LEAST, a NAME, SOURCE (even if "*";), and an ACTION **/
+
+                        program {
+                                name,       "vol_incr_sig";
+                                //signal,           "*";
+                                //source,     "volplus_click";
+                                signal,     "mouse,up,1";
+                                source,     "vol_incr_button";
+                                action,     SIGNAL_EMIT "VOL_INCR" "vol_incr_button";
+                        }
+
+                        /* Lower Volume */
+                        program {
+                                name,       "volminus_click";
+                                signal,     "mouse,down,1";
+                                source,     "vol_decr_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "vol_decr_button";
+                        }
+                        program {
+                                name,       "volminus_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "vol_decr_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "vol_decr_button";
+                        }
+                        program {
+                                name,       "vol_decr_sig";
+                                signal,     "mouse,up,1";
+                                source,     "vol_decr_button";
+                                action,     SIGNAL_EMIT "VOL_DECR" "vol_decr_button";
+                        }
+
+                        program {
+                                name,       "vol_decr_sig_wheel1";
+                                signal,     "mouse,wheel,0,-1";
+                                source,     "vol_decr_button";
+                                action,     SIGNAL_EMIT "VOL_INCR" "vol_incr_button";
+                        }
+
+                        program {
+                                name,       "vol_decr_sig_wheel2";
+                                signal,     "mouse,wheel,0,1";
+                                source,     "vol_decr_button";
+                                action,     SIGNAL_EMIT "VOL_DECR" "vol_decr_button";
+                        }
+
+                        /* switch to "large" mode */
+                        program {
+                                name, "titlebar_dbl_click";
+                                signal, "mouse,down,1,double";
+                                source, "background";
+                                action, SIGNAL_EMIT "SWITCH_GROUP" "euphoria";
+                        }
+
+/********* FIN *****************/
diff --git a/data/themes/default/images/background-dark-green.png b/data/themes/default/images/background-dark-green.png
new file mode 100644 (file)
index 0000000..e338859
Binary files /dev/null and b/data/themes/default/images/background-dark-green.png differ
diff --git a/data/themes/default/images/background-green.png b/data/themes/default/images/background-green.png
new file mode 100644 (file)
index 0000000..2c44f99
Binary files /dev/null and b/data/themes/default/images/background-green.png differ
diff --git a/data/themes/default/images/border-scale.png b/data/themes/default/images/border-scale.png
new file mode 100644 (file)
index 0000000..ad7a073
Binary files /dev/null and b/data/themes/default/images/border-scale.png differ
diff --git a/data/themes/default/images/button-3stage-fulldown.png b/data/themes/default/images/button-3stage-fulldown.png
new file mode 100644 (file)
index 0000000..56f1464
Binary files /dev/null and b/data/themes/default/images/button-3stage-fulldown.png differ
diff --git a/data/themes/default/images/button-3stage-selected.png b/data/themes/default/images/button-3stage-selected.png
new file mode 100644 (file)
index 0000000..11ce0ae
Binary files /dev/null and b/data/themes/default/images/button-3stage-selected.png differ
diff --git a/data/themes/default/images/button-3stage-unselected.png b/data/themes/default/images/button-3stage-unselected.png
new file mode 100644 (file)
index 0000000..616f18d
Binary files /dev/null and b/data/themes/default/images/button-3stage-unselected.png differ
diff --git a/data/themes/default/images/button-full-blinking.png b/data/themes/default/images/button-full-blinking.png
new file mode 100644 (file)
index 0000000..01aa251
Binary files /dev/null and b/data/themes/default/images/button-full-blinking.png differ
diff --git a/data/themes/default/images/button-full-clicked.png b/data/themes/default/images/button-full-clicked.png
new file mode 100644 (file)
index 0000000..eeffcf2
Binary files /dev/null and b/data/themes/default/images/button-full-clicked.png differ
diff --git a/data/themes/default/images/button-full-normal.png b/data/themes/default/images/button-full-normal.png
new file mode 100644 (file)
index 0000000..88c4233
Binary files /dev/null and b/data/themes/default/images/button-full-normal.png differ
diff --git a/data/themes/default/images/button-full-unblinking.png b/data/themes/default/images/button-full-unblinking.png
new file mode 100644 (file)
index 0000000..186a2e8
Binary files /dev/null and b/data/themes/default/images/button-full-unblinking.png differ
diff --git a/data/themes/default/images/button-off.png b/data/themes/default/images/button-off.png
new file mode 100644 (file)
index 0000000..15dc4d6
Binary files /dev/null and b/data/themes/default/images/button-off.png differ
diff --git a/data/themes/default/images/button-on.png b/data/themes/default/images/button-on.png
new file mode 100644 (file)
index 0000000..99d1fe7
Binary files /dev/null and b/data/themes/default/images/button-on.png differ
diff --git a/data/themes/default/images/button-small-clicked.png b/data/themes/default/images/button-small-clicked.png
new file mode 100644 (file)
index 0000000..dbcb4b4
Binary files /dev/null and b/data/themes/default/images/button-small-clicked.png differ
diff --git a/data/themes/default/images/button-small-normal.png b/data/themes/default/images/button-small-normal.png
new file mode 100644 (file)
index 0000000..11971c4
Binary files /dev/null and b/data/themes/default/images/button-small-normal.png differ
diff --git a/data/themes/default/images/close_button.png b/data/themes/default/images/close_button.png
new file mode 100644 (file)
index 0000000..a27902a
Binary files /dev/null and b/data/themes/default/images/close_button.png differ
diff --git a/data/themes/default/images/controls-back.png b/data/themes/default/images/controls-back.png
new file mode 100644 (file)
index 0000000..73bb2fc
Binary files /dev/null and b/data/themes/default/images/controls-back.png differ
diff --git a/data/themes/default/images/function-button-clicked.png b/data/themes/default/images/function-button-clicked.png
new file mode 100644 (file)
index 0000000..36da559
Binary files /dev/null and b/data/themes/default/images/function-button-clicked.png differ
diff --git a/data/themes/default/images/function-button-normal.png b/data/themes/default/images/function-button-normal.png
new file mode 100644 (file)
index 0000000..ddb7927
Binary files /dev/null and b/data/themes/default/images/function-button-normal.png differ
diff --git a/data/themes/default/images/lcd_area.png b/data/themes/default/images/lcd_area.png
new file mode 100644 (file)
index 0000000..927dc38
Binary files /dev/null and b/data/themes/default/images/lcd_area.png differ
diff --git a/data/themes/default/images/minimize.png b/data/themes/default/images/minimize.png
new file mode 100644 (file)
index 0000000..729203b
Binary files /dev/null and b/data/themes/default/images/minimize.png differ
diff --git a/data/themes/default/images/set-button-normal.png b/data/themes/default/images/set-button-normal.png
new file mode 100644 (file)
index 0000000..482428e
Binary files /dev/null and b/data/themes/default/images/set-button-normal.png differ
diff --git a/data/themes/default/images/small-text-button.png b/data/themes/default/images/small-text-button.png
new file mode 100644 (file)
index 0000000..b45311c
Binary files /dev/null and b/data/themes/default/images/small-text-button.png differ
diff --git a/data/themes/default/images/tracktor-sample-alive.png b/data/themes/default/images/tracktor-sample-alive.png
new file mode 100644 (file)
index 0000000..2abddb7
Binary files /dev/null and b/data/themes/default/images/tracktor-sample-alive.png differ
diff --git a/data/themes/default/images/tracktor-sample-dead.png b/data/themes/default/images/tracktor-sample-dead.png
new file mode 100644 (file)
index 0000000..94a9705
Binary files /dev/null and b/data/themes/default/images/tracktor-sample-dead.png differ
diff --git a/data/themes/default/images/vol-display.png b/data/themes/default/images/vol-display.png
new file mode 100644 (file)
index 0000000..7d5f3b1
Binary files /dev/null and b/data/themes/default/images/vol-display.png differ
diff --git a/data/themes/default/images/vol-label.png b/data/themes/default/images/vol-label.png
new file mode 100644 (file)
index 0000000..b35ff83
Binary files /dev/null and b/data/themes/default/images/vol-label.png differ
diff --git a/data/themes/default/images/vol-minus-clicked.png b/data/themes/default/images/vol-minus-clicked.png
new file mode 100644 (file)
index 0000000..afc4877
Binary files /dev/null and b/data/themes/default/images/vol-minus-clicked.png differ
diff --git a/data/themes/default/images/vol-minus.png b/data/themes/default/images/vol-minus.png
new file mode 100644 (file)
index 0000000..f6cde18
Binary files /dev/null and b/data/themes/default/images/vol-minus.png differ
diff --git a/data/themes/default/images/vol-plus-clicked.png b/data/themes/default/images/vol-plus-clicked.png
new file mode 100644 (file)
index 0000000..7ef4918
Binary files /dev/null and b/data/themes/default/images/vol-plus-clicked.png differ
diff --git a/data/themes/default/images/vol-plus.png b/data/themes/default/images/vol-plus.png
new file mode 100644 (file)
index 0000000..4937ae9
Binary files /dev/null and b/data/themes/default/images/vol-plus.png differ
diff --git a/data/themes/iio/collections/base_to.edc b/data/themes/iio/collections/base_to.edc
new file mode 100644 (file)
index 0000000..a2c889b
--- /dev/null
@@ -0,0 +1,414 @@
+#define BASE "base_to"
+
+       part { name, BASE; type, IMAGE; mouse_events, 1; repeat_events, 1;
+       description { state, "default" 0.0; min, 123 94; max, 123 94; 
+       rel1 { relative, 0.0 0.0; offset, 0.0 0.0; }              
+       rel2 { relative, 1.0 1.0; offset, 0 0; }        
+       image { normal, "base_layer.png"; border, 6 6 6 6; }
+       fill { smooth, 1; } } }
+///////////////////////////////////////////////////////////////////////
+       part { name, RIGHT"panel"; type, IMAGE; mouse_events, 1; repeat_events, 1;
+       description { state, "default" 0.0; min, 0 94; max, 145 94;
+       rel1 { to, BASE; relative, 1.0 0.0; offset, 0 0; }
+       rel2 { to, RIGHT"border"; relative, 0.0 1.0; offset, -1 -1; } 
+       image { normal, "base_layer.png"; border, 6 6 6 6; }
+       fill { smooth, 1; } } }
+
+       part { name, RIGHT"border"; mouse_events, 1;
+       description { state, "default" 0.0; min, 19 94; max, 19 94;
+       rel1 { to, BASE; relative, 2.0 0.0; offset, 145 0; }
+       rel2 { to, BASE; relative, 1.0 1.0; offset, 3 -1; }
+       image { normal, "bar_delay_right.png"; border, 0 0 7 8; } }
+
+       description { state, "slide" 0.0; min, 19 94; max, 19 94; 
+       rel1 { to, BASE; relative, 1.0 1.0; offset, -3 0; }
+       rel2 { to, BASE; relative, 0.0 0.0; offset, 145 -1; }
+       image { normal, "bar_delay_right.png"; border, 0 0 7 8; } } }
+
+       part { name, RIGHT"border-slide"; type, RECT;
+       description { state, "default" 0.0; visible, 0; min, 0 94; max, 9999 9999;
+       color, 0 0 0 0;
+       rel1 { to, RIGHT"border"; relative, 1.0 0.0; offset, 0 0; }
+       rel2 { to, RIGHT"border"; relative, 1.0 1.0; offset, 0 0; } }
+
+       description { state, "slide" 0.0; visible, 1; min, 0 94; max, 9999 9999; 
+       color, 0 0 0 0;
+       rel1 { to, RIGHT"border"; relative, 0.0 0.0; offset, 0 0; }
+       rel2 { to, RIGHT"border"; relative, 1.0 1.0; offset, 0 0; } } }
+///////////////////////////////////////////////////////////////////////
+       part { name, LEFT"panel"; type, IMAGE; mouse_events, 1; repeat_events, 1;
+       description { state, "default" 0.0; min, 0 94; max, 145 94;
+       rel1 { to, LEFT"border"; relative, 1.0 0.0; offset, 0 0; }
+       rel2 { to, BASE; relative, 0.0 1.0; offset, -1 -1; } 
+       image { normal, "base_layer.png"; border, 6 6 6 6; }
+       fill { smooth, 1; } } }
+
+       part { name, LEFT"border"; mouse_events, 1;
+       description { state, "default" 0.0; min, 19 94; max, 19 94; align, 0.0 0.0;       
+       rel1 { to, BASE; relative, 0.0 0.0; offset, -145 0; }
+       rel2 { to, BASE; relative, 0.0 1.0; offset, 0 -1; }       
+       image { normal, "bar_delay_left.png"; } } 
+
+       description { state, "slide" 0.0; min, 19 94; max, 19 94; align, 0.0 0.0;       
+       rel1 { to, BASE; relative, 0.0 0.0; offset, -19 0; }
+       rel2 { to, BASE; relative, 0.0 1.0; offset, 1 -1; }       
+       image { normal, "bar_delay_left.png"; } } }
+
+       part { name, LEFT"border-slide"; type, RECT;
+       description { state, "default" 0.0; visible, 0; min, 0 94; max, 9999 9999;
+       color, 0 0 0 0;
+       rel1 { to, LEFT"border"; relative, 0.0 0.0; offset, 0 0; }
+       rel2 { to, LEFT"border"; relative, 1.0 1.0; offset, 0 0; } }
+
+       description { state, "slide" 0.0; visible, 1; min, 0 94; max, 9999 9999; 
+       color, 0 0 0 0;
+       rel1 { to, LEFT"border"; relative, 0.0 0.0; offset, 0 0; }
+       rel2 { to, LEFT"border"; relative, 1.0 1.0; offset, 0 0; } } }
+///////////////////////////////////////////////////////////////////////
+       part { name, RIGHT"lcd"; type, IMAGE; mouse_events, 0;
+       description { state, "default" 0.0; min, 0 94; max, 142 94; 
+       rel1 { to, BASE; relative, 1.0  0.0; offset, -16 0; }
+       rel2 { to, RIGHT"border"; relative, 0.0 1.0; offset, -1 -1; }
+       image { normal, "lcd_window.png"; border, 9 9 9 9; }
+       fill { smooth, 0; } } 
+
+       description { state, "slide" 0.0; min, 0 94; max, 142 94; 
+       rel1 { to, BASE; relative, 1.0  0.0; offset, -8 0; }
+       rel2 { to, RIGHT"border"; relative, 0.0 1.0; offset, -1 -1; }
+       image { normal, "lcd_window.png"; border, 9 9 9 9; }
+       fill { smooth, 0; } } }
+
+//     part { name, "RpanelClipArea"; description {
+//     state, "default" 0.0; min, 0 94; max, 142 94;
+//     rel1 { to, RIGHT"panel"; relative, 0.0 0.0; offset, 0 0; }
+//     rel2 { to, BASE; relative, 1.0 1.0; offset, 0 0; }
+//     border, 0 0 0 0; } }
+//
+       part { name, LEFT"lcd";  type, IMAGE; mouse_events, 0;    
+       description { state, "default" 0.0; min, 0 94; max, 142 94; align, 0.0 0.0; 
+       rel1 { to, LEFT"border"; relative, 1.0 0.0; offset, 0 0; }                      
+       rel2 { to, BASE; relative, 0.0 1.0; offset, 16 0;  }
+       image { normal, "lcd_window.png"; border, 9 9 9 9; }
+       fill { smooth, 0; } }
+
+       description { state, "slide" 0.0; min, 0 94; max, 142 94; align, 0.0 0.0; 
+       rel1 { to, LEFT"border"; relative, 1.0  0.0; offset, 0 0; }                     
+       rel2 { to, BASE; relative, 0.0 1.0; offset, 7 0;  }
+       image { normal, "lcd_window.png"; border, 9 9 9 9; }
+       fill { smooth, 0; } } }
+//
+///////////////////////////////////////////////////////////////////////
+       part { name, "CenterClipArea"; type, RECT;
+       mouse_events, 1; repeat_events, 1;
+       description { state, "default" 0.0; min, 123 94; max, 123 94;
+       color, 0 0 0 0;
+       rel1 { to, BASE; relative, 0.0 0.0; offset, 0 0; }
+       rel2 { to, BASE; relative, 1.0 1.0; offset, 0 0; } } }
+///////////////////////////////////////////////////////////////////////
+// Placements 
+
+       part { name, "ct_align"; type, IMAGE; mouse_events, 0;    
+       description { state, "default" 0.0; min, 85 28; max, 85 28;     
+       rel1 { relative, 0.0 0.5; offset, 0 -20; to, "CenterClipArea"; }
+       rel2 { relative, 1.0 0.0; offset, 0 0; to, "CenterClipArea"; }       
+       image { normal, "align_top.png"; } } }  
+//
+       part { name, "cl_align"; type, IMAGE; mouse_events, 0;
+       description { state, "default" 0.0; min, 22 41; max, 22 41; 
+       rel1 { relative, 0.0 0.5; offset, 0 2; to, "CenterClipArea"; }
+       rel2 { relative, 0.5 0.5; offset, -1 0; to, "CenterClipArea"; }            
+       image { normal, "align_left.png"; } } }
+//     
+       part { name, "cc_align"; type, IMAGE; mouse_events, 0;      
+       description { state, "default" 0.0; min, 41 41; max, 41 41;
+       rel1 { relative, 0.0 0.5; offset, 0 2; to, "CenterClipArea"; }
+       rel2 { relative, 1.0 0.5; offset, 0 0; to, "CenterClipArea"; }        
+       image { normal, "align_center.png"; } } }
+//     
+       part { name, "cr_align"; type, IMAGE; mouse_events, 0;      
+       description { state, "default" 0.0; max, 22 41; min, 22 41;
+       rel1 { relative, 0.5 0.5; offset, 0 2; to, "CenterClipArea"; }
+       rel2 { relative, 1.0 0.5; offset, 1 0; to, "CenterClipArea"; }         
+       image { normal, "align_right.png"; } } }
+//     
+       part { name, "cb_align"; type, IMAGE; mouse_events, 0;      
+       description { state, "default" 0.0; min, 85 25; max, 85 25;
+       rel1 { relative, 0.0 0.5; offset, 0 1; to, "CenterClipArea"; }
+       rel2 { relative, 1.0 1.0; offset, 0 20; to, "CenterClipArea"; }  
+       image { normal, "align_bottom.png"; } } } 
+//
+///////////////////////////////////////////////////////////////////////
+// Buttons
+
+       part { name, "prev_button"; type, IMAGE; mouse_events, 1;
+       description { state, "default" 0.0; min, 13 39; max, 13 39;                     
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "cl_align"; }
+       rel2 { relative, 1.0 1.0; offset, 5 0; to, "cl_align"; }        
+       image { normal, "previous_button.png"; } }
+
+       description { state, "hilited" 0.0; min, 13 39; max, 13 39;                     
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "cl_align"; }
+       rel2 { relative, 1.0 1.0; offset, 5 0; to, "cl_align"; }        
+       image { normal, "previous_button_hilited.png";} }
+
+       description { state, "clicked" 0.0; max, 13 39; min, 13 39;                     
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "cl_align"; }
+       rel2 { relative, 1.0 1.0; offset, 5 0; to, "cl_align"; }                
+       image { normal, "previous_button_clicked.png"; } } } 
+//
+       part { name, "pause_button"; type, IMAGE; mouse_events, 1;          
+       description { state, "default" 0.0; min, 39 12; max, 39 12;                     
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "ct_align"; }                       
+       rel2 { relative, 1.0 1.0; offset, 0 12; to, "ct_align"; }               
+       image { normal, "pause_button.png"; } }
+
+       description { state, "hilited" 0.0; max, 39 12; min, 39 12;
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "ct_align"; }
+       rel2 { relative, 1.0 1.0; offset, 0 12; to, "ct_align"; }       
+       image { normal, "pause_button_hilited.png"; } }
+       
+       description { state, "clicked" 0.0; min, 39 12; max, 39 12;
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "ct_align"; }
+       rel2 { relative, 1.0 1.0; offset, 0 12;to, "ct_align"; }                
+       image { normal, "pause_button_clicked.png"; } } } 
+//     
+       part { name, "play_button"; type, IMAGE; mouse_events, 1;           
+       description { state, "default" 0.0; min, 23 23; max, 23 23;                     
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "cc_align"; }
+       rel2 { relative, 1.0 1.0; offset, 0 0; to, "cc_align"; }                        
+       image { normal, "play_button.png"; border, 1 1 1 1; }
+       fill { smooth, 0; } }
+       
+       description { state, "hilited" 0.0; min, 23 23; max, 23 23;                     
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "cc_align"; }
+       rel2 { relative, 1.0 1.0; offset, 0 0; to, "cc_align"; }        
+       image { normal, "play_button_hilited.png"; border, 1 1 1 1; }
+       fill { smooth, 1; } }
+
+       description { state, "clicked" 0.0; min, 23 23; max, 23 23;                     
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "cc_align"; }
+       rel2 { relative, 1.0 1.0; offset, 0 0; to, "cc_align"; }                
+       image { normal, "play_button_clicked.png"; border, 1 1 1 1; }
+       fill { smooth, 0; } } }
+//
+       part { name, "next_button"; type, IMAGE; mouse_events, 1;           
+       description { state, "default" 0.0; min, 13 39; max, 13 39;                     
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "cr_align"; }
+       rel2 { relative, 1.0 1.0; offset, -5 0; to, "cr_align"; }
+       image { normal, "next_button.png"; } }
+       
+       description { state, "hilited" 0.0; min, 13 39; max, 13 39;
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "cr_align"; }
+       rel2 { relative, 1.0 1.0; offset, -5 0; to, "cr_align"; }
+       image { normal, "next_button_hilited.png"; } }
+
+       description { state, "clicked" 0.0; min, 13 39; max, 13 39;
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "cr_align"; }
+       rel2 { relative, 1.0 1.0; offset, -5 0; to, "cr_align"; }
+       image { normal, "next_button_clicked.png"; } } } 
+//
+       part { name, "stop_button"; type, IMAGE; mouse_events, 1;           
+       description { state, "default" 0.0; min, 39 13; max, 39 13;                     
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "cb_align"; }
+       rel2 { relative, 1.0 1.0; offset, 0 -8; to, "cb_align"; }
+       image { normal, "stop_button.png";       } }
+
+       description { state, "hilited" 0.0; min, 39 13; max, 39 13;
+       rel1 { relative, 0 0; offset, 0 0; to, "cb_align"; }
+       rel2 { relative, 1.0 1.0; offset, 0 -8; to, "cb_align"; }               
+       image { normal, "stop_button_hilited.png"; } }
+       
+       description { state, "clicked" 0.0; min, 39 13; max, 39 13;
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "cb_align"; }
+       rel2 { relative, 1.0 1.0; offset, 0 -8; to, "cb_align"; }
+       image { normal, "stop_button_clicked.png"; } } }
+//
+///////////////////////////////////////////////////////////////////
+/* Track information and misc. */
+// First object CONTAINER for LEFT "lcd" data
+
+       part { name, "trans_Rect"; type, RECT; 
+       description { state, "default" 0.0; min, 132 71; max, 124 71; 
+       rel1 { relative, 1.0 1.0; offset, 19 0; to, LEFT"border"; }                     
+       rel2 { relative, 1.0 0.0; offset, 0 0; to, LEFT"panel"; } }
+
+       description { state, "slide" 0.0; min, 0 71; max, 132 71;
+       rel1 { relative, 1.0 1.0; offset, 19 0; to, LEFT"border"; }                     
+       rel2 { relative, 1.0 0.0; offset, 0 0; to, LEFT"panel"; } } }
+//
+       part { name, "time_arrow"; type, IMAGE; clip_to, "trans_Rect";
+       description { min, 4 7; max, 4 7; state, "default" 0.0;
+       rel1 { relative, 0 0; offset, 6 19; to, "trans_Rect"; }
+       rel2 { relative, 0 0; offset, 0 0; to, "trans_Rect"; }
+       image { normal, "h_arrow.png"; }
+       fill { smooth, 1; } } }
+
+       part { name, "player.time"; type, TEXT; mouse_events, 0; clip_to, "trans_Rect";                   
+       description { state, "default" 0.0; visible, 1;
+       rel1 { to, "trans_Rect"; relative, 0 0; offset, 10 14; }
+       rel2 { to, "trans_Rect"; relative, 0.5 0; offset, 0 0; }
+       color, 76 67 88 255;
+       text { text, "00:00"; font, "Edje.visitor1"; size, 9; align, 0 0; } } }
+//
+       part { name, "artist_bullet"; type, IMAGE; clip_to, "trans_Rect";
+       description { min, 3 3; max, 3 3; state, "default" 0.0;
+       rel1 { relative, 0 0; offset, 2 30; to, "time_arrow"; }
+       rel2 { relative, 0 0; offset, 0 0; to, "time_arrow"; }
+       image { normal, "bullet.png"; }
+       fill { smooth, 1; } } }
+
+       part { name, "artist_name"; type, TEXT; clip_to, "trans_Rect";
+       description { state, "default" 0.0;
+       rel1 { relative, 0.0 0.0; offset, 10 13; to, "trans_Rect"; }
+       rel2 { relative, 1.0 1.0; offset, -4 12; to, "trans_Rect"; }
+       color, 76 67 88 255;
+       text { text, "Artist"; font, "Edje.visitor1"; size, 9; align, 0.0 0.1; } } }
+//
+       part { name, "album_bullet"; type, IMAGE; clip_to, "trans_Rect";
+       description { min, 3 3; max, 3 3; state, "default" 0.0;
+       rel1 { relative, 0 0; offset, 0 8; to, "artist_bullet"; }
+       rel2 { relative, 1 1; offset, 0 10; to, "artist_bullet"; }
+       image { normal, "bullet.png"; }
+       fill { smooth, 1; } } }
+
+       part { name, "album_name"; type, TEXT; clip_to, "trans_Rect";       
+       description { state, "default" 0.0;
+       rel1 { relative, 0.0 0.0; offset, 0 15; to, "artist_name"; }
+       rel2 { relative, 1.0 1.0; offset, 0 17; to, "artist_name"; }
+       color, 76 67 88 255;
+       text { text, "Album"; font, "Edje.visitor1"; size, 9; align, 0 0; } } }
+//
+       part { name, "song_bullet"; type, IMAGE; clip_to, "trans_Rect";
+       description { min, 3 3; max, 3 3; state, "default" 0.0;
+       rel1 { relative, 0 0; offset, 0 11; to, "album_bullet"; }
+       rel2 { relative, 1 1; offset, 0 10; to, "album_bullet"; }
+       image { normal, "bullet.png"; }
+       fill { smooth, 1; } } }
+
+       part { name, "song_name"; type, TEXT; mouse_events, 0; clip_to, "trans_Rect";                
+       description { state,  "default" 0.0;
+       rel1 { relative, 0 0; offset, 0 10; to, "album_name"; }
+       rel2 { relative, 1 0; offset, 0 10; to, "album_name"; }
+       color, 76 67 88 255;
+       text { text, "Song"; font, "Edje.visitor1"; size, 9; align, 0 0; } } }
+//
+       part { name, "bitrate_bullet"; type, IMAGE; clip_to, "trans_Rect";
+       description { min, 3 3; max, 3 3; state, "default" 0.0;
+       rel1 { relative, 0 0; offset, 2 19; to, "song_bullet"; }
+       rel2 { relative, 0 1; offset, 0 19; to, "song_bullet"; }
+       image { normal, "bullet.png"; }
+       fill { smooth, 1; } } }
+
+       part { name, "track_bitrate"; type, TEXT; clip_to, "trans_Rect";                 
+       description { state,  "default" 0.0; min, 20 7; max, 20 7;
+       rel1 { relative, 0 0; offset, 48 22; to, "trans_Rect"; }
+       rel2 { relative, 0 1; offset, -8 30; to, "trans_Rect"; }
+       color, 76 67 88 255;
+       text { text, "000"; font, "Edje.visitor1"; size, 9; align, 0 0; } } }
+///////////////////////////////////////////////////////////////////////
+// SeekerBar
+
+       part { name, "seekerTrough"; clip_to, "trans_Rect";
+       description { state, "default" 0.0; visible, 1; min, 10 5; max, 9999 5;
+       rel1 { relative, 0.0 0.0; offset, 1 15; to, "trans_Rect"; }
+       rel2 { relative, 1.0 1.0; offset, -7 15; to, "trans_Rect"; }
+       image { normal, "seeker_trough.png"; border, 5 5 1 1; } } }
+//
+       part { name, "seekerBar"; clip_to, "trans_Rect";
+       description { state, "default" 0.0; visible, 1; min, 0 5; max, 9999 5;
+       rel1 { to, "seekerTrough"; relative, 0 0; offset, 0 0; }
+       rel2 { to_x, "seeker"; to_y, "seekerTrough"; relative, 0 1; offset, 0 -1; }
+       image { normal, "seeker_bar.png"; border, 5 5 1 1; } } }
+//
+       part { name, "seeker"; type, RECT; clip_to, "trans_Rect";
+       dragable { x, 1 1 1;  y, 0 0 0; confine, "seekerTrough"; }
+       description { state, "default" 0.0; visible, 0; color, 0 0 0 255; min, 1 5; max, 1 5;
+       rel1 { to, "seekerTrough"; relative, 0 0; offset, 0 0; }
+       rel2 { to, "seekerTrough"; relative, 1 1; offset,  -1 -1; } } }
+//
+       part { name, "switch_stance"; type, RECT; mouse_events, 1; clip_to, "trans_Rect";
+       description { min, 10 10; max, 10 10; state, "default" 0.0;
+       rel1 { relative, 1.0 0.0; offset, 190 4; to, "time_arrow"; }
+       rel2 { relative, 1.0 0.0; offset, 0 0; to, "time_arrow"; }
+       color, 0 0 0 0; } }
+///////////////////////////////////////////////////////////////////////
+// PLAYLIST
+
+       part { name, "playlistPanel"; mouse_events, 1; type, RECT;
+       description { state, "default" 0.0; min, 0 72; max, 120 72;
+       rel1 { to, RIGHT"lcd"; relative, 0 1; offset, 8 0; }
+       rel2 { to, RIGHT"border"; relative, 0 0; offset, -8 -1; } } }
+
+       part { name, "playlist.container"; type, RECT; mouse_events, 1; repeat_events, 1; clip_to, "playlistPanel";
+       description { state, "default" 0.0; min, 0 62; max, 120 62;
+       rel1 { to, "playlistPanel"; relative, 0.0 0.0; offset, 0 -10; }
+       rel2 { to, "playlistPanel"; relative, 1.0 1.0; offset, 0 1; }
+       color, 0 0 0 0; } }
+//
+       part { name, "add_button"; type, IMAGE; mouse_events, 1; clip_to, "playlistPanel";
+       description { min, 14 12; max, 14 12; state, "default" 0.0;
+       rel1 { relative, 0 0; offset, 4 20; to, "playlistPanel"; }
+       rel2 { relative, 0.5 1; offset, 0 37; to, "playlistPanel"; }
+       image { normal, "add_track.png"; } fill { smooth, 1; } }
+
+       description { min, 14 12; max, 14 12; state, "hilited" 0.0;
+       rel1 { relative, 0 0; offset, 4 20; to, "playlistPanel"; }
+       rel2 { relative, 0.5 1; offset, 0 37; to, "playlistPanel"; }
+       image { normal, "add_track_hilited.png"; } }
+
+       description { min, 14 12; max, 14 12; state, "clicked" 0.0; 
+       rel1 { relative, 0 0; offset, 4 20; to, "playlistPanel"; }
+       rel2 { relative, 0.5 1; offset, 0 37; to, "playlistPanel"; }
+       image { normal, "add_track_clicked.png"; } } }
+
+       part { name, "delete_button"; type, IMAGE; mouse_events, 1; clip_to, "playlistPanel";
+       description { min, 24 10; max, 24 10; state, "default" 0.0;
+       rel1 { relative, 0 0; offset, 57 21; to, "playlistPanel"; }
+       rel2 { relative, 0.5 1; offset, 0 38; to, "playlistPanel"; }
+       image { normal, "delete_track.png"; } fill { smooth, 1; } }
+
+       description { min, 24 10; max, 24 10; state, "hilited" 0.0; 
+       rel1 { relative, 0 0; offset, 57 21; to, "playlistPanel"; }
+       rel2 { relative, 0.5 1; offset, 0 38; to, "playlistPanel"; }
+       image { normal, "delete_track_hilited.png"; } }
+
+       description { min, 24 10; max, 24 10; state, "clicked" 0.0; 
+       rel1 { relative, 0 0; offset, 57 21; to, "playlistPanel"; }
+       rel2 { relative, 0.5 1; offset, 0 38; to, "playlistPanel"; }
+       image { normal, "delete_track_clicked.png"; } } }
+
+       part { name, "edit_button"; type, IMAGE; mouse_events, 1; clip_to, "playlistPanel";
+       description { min, 16 12; max, 16 12; state, "default" 0.0;
+       rel1 { relative, 0 0; offset, 104 20; to, "playlistPanel"; }
+       rel2 { relative, 0.5 1; offset, 10 37; to, "playlistPanel"; }
+       image { normal, "edit_track.png"; } fill { smooth, 1; } } 
+
+       description { min, 16 12; max, 16 12; state, "hilited" 0.0; 
+       rel1 { relative, 0 0; offset, 104 20; to, "playlistPanel"; }
+       rel2 { relative, 0.5 1; offset, 10 37; to, "playlistPanel"; }
+       image { normal, "edit_track_hilited.png"; } }
+
+       description { min, 16 12; max, 16 12; state, "clicked" 0.0; 
+       rel1 { relative, 0 0; offset, 104 20; to, "playlistPanel"; }
+       rel2 { relative, 0.5 1; offset, 10 37; to, "playlistPanel"; }
+       image { normal, "edit_track_clicked.png"; } } }
+///////////////////////////////////////////////////////////////////////
+       part { name, "quit"; type, IMAGE; mouse_events, 1; clip_to, "trans_Rect";
+       description { min, 10 10; max, 10 10; state, "default" 0.0;
+       rel1 { relative, 1 0; offset, 10 10; to, "switch_stance"; }
+       rel2 { relative, 1.0 0.0; offset, 6 0; to, "switch_stance"; }
+       image { normal, "close_button.png"; }
+       fill { smooth, 1; } }
+
+       description { min, 10 10; max, 10 10; state, "hilited" 0.0;
+       rel1 { relative, 1 0; offset, 10 10; to, "switch_stance"; }
+       rel2 { relative, 1.0 0.0; offset, 6 0; to, "switch_stance"; }
+       image { normal, "close_button_hilited.png"; }
+       fill { smooth, 1; } }
+
+       description { min, 10 10; max, 10 10; state, "clicked" 0.0;
+       rel1 { relative, 1 0; offset, 10 10; to, "switch_stance"; }
+       rel2 { relative, 1.0 0.0; offset, 6 0; to, "switch_stance"; }
+       image { normal, "close_button_clicked.png"; }
+       fill { smooth, 1; } } }
+//
diff --git a/data/themes/iio/collections/esmart_fd.edc b/data/themes/iio/collections/esmart_fd.edc
new file mode 100644 (file)
index 0000000..898f6c3
--- /dev/null
@@ -0,0 +1,70 @@
+
+part { name, "base"; type, IMAGE; mouse_events, 1; repeat_events, 1;
+       description { state, "default" 0.0; visible, 1;
+       rel1 { relative, 0.0 0.0; offset, 20 0; } 
+       rel2 { relative, 1.0 1.0; offset, -18 0; }
+       image { border, 0 0 12 12; normal, "base_layer.png"; } 
+       } 
+}
+
+part { name, "base.confine"; type, RECT; mouse_events, 0;
+       description { state, "default" 0.0; visible, 1;
+       rel1 { relative, 0.0 0.0; offset, 20 0; } 
+       rel2 { relative, 1.0 1.0; offset, -20 0; }
+       color, 255 255 255 0; 
+       }
+}
+
+part { name, "base.dragable"; type, IMAGE; mouse_events, 1;
+       dragable { y, 0 0 0; x, 1 1 0; confine, "base.confine";  }
+       description { state, "default" 0.0; visible, 1; min, 11 85;
+       rel1 { relative, 0.5 0.5; offset, 0 0; } 
+       rel2 { relative, 0.5 0.5; offset, 0 0; }
+       image { normal, "v_scrollbar.png"; border, 4 4 17 17; }
+       color, 255 255 255 200; 
+       }
+}
+    
+part { name, "base_left"; type, IMAGE; repeat_events, 1;
+       description { state, "default" 0.0; visible, 1;
+       rel1 { relative, 0.0 0.0; offset, 0 0; } 
+       rel2 { relative, 0.0 1.0; offset, 19 0; }
+       image { border, 18 0 12 12; normal, "bar_delay_left.png"; }
+       }
+}
+    
+part { name, "base.directory.clip"; type, RECT; mouse_events, 0;
+       description { state, "default" 0.0; visible, 1;
+       rel1 { relative, 0.0 0.0; offset, 15 -9; } 
+       rel2 { relative, 0.0 1.0; offset, -2 8; to_x, "base.dragable"; }
+       color, 255 255 255 255; 
+       }
+}
+    
+VPANEL("directory", "arrow_up.png", "arrow_up.png", 14, 14,
+       "arrow_down.png", "arrow_down.png", 14, 14,
+       "base.directory.clip", 0.0 0.0, 0 0,
+       "base.directory.clip", 1.0 1.0, 0 0,
+       "base.directory.clip")
+
+part { name, "base_right"; type, IMAGE; repeat_events, 1;
+       description { state, "default" 0.0; visible, 1;
+       rel1 { relative, 1.0 0.0; offset, -19 0; } 
+       rel2 { relative, 1.0 1.0; offset, 0 0; }
+       image { border, 0 18 12 12; normal, "bar_delay_right.png"; }
+       }
+}
+    
+part { name, "base.files.clip"; type, RECT; mouse_events, 0;
+       description { state, "default" 0.0; visible, 1;
+       rel1 { relative, 0.5 0.0; offset, 5 -9; to_x, "base.dragable"; } 
+       rel2 { relative, 1.0 1.0; offset, -18 8; }
+       color, 255 255 255 255; 
+       }
+}
+
+VPANEL("files", "arrow_up.png", "arrow_up.png", 14, 14,
+       "arrow_down.png", "arrow_down.png", 14, 14,
+       "base.files.clip", 0.0 0.0, 0 0,
+       "base.files.clip", 1.0 1.0, 0 0,
+       "base.files.clip")
diff --git a/data/themes/iio/collections/playlist.edc b/data/themes/iio/collections/playlist.edc
new file mode 100644 (file)
index 0000000..462c902
--- /dev/null
@@ -0,0 +1,25 @@
+#define BG "background"
+
+       part { name, BG; type, RECT;
+       description { state, "default" 0.0; color, 249 249 251 255; }
+       // Enable line bellow if you want to hilite your playlist entry 
+       //description { state, "selected" 0.0; color, 225 222 229 255; }
+       description { state, "selected" 0.0; color, 249 249 251 255; } }
+//
+       part { name, "title"; type, TEXT; mouse_events, 1;
+       description { state, "default" 0.0; color, 31 31 55 128; max, 103 7;
+       rel1 { relative, 0.0 0.0; offset, 0 0; to, BG; }
+       rel2 { relative, 1.0 1.0; offset, -25 2; to, BG; }
+       text { text, "title"; font, "Edje.visitor1"; size, 9; align, 0.0 0.0; } }
+
+       description { state, "selected" 0.0; color, 31 31 55 255; max, 103 7;
+       rel1 { to, BG; relative, 0.0 0.0; offset, 0 0; }        
+       rel2 { to, BG; relative, 1.0 1.0; offset, -25 2; } 
+       text { text, "title"; font, "Edje.visitor1"; size, 9; align, 0.0 0.0; } } }
+//     
+       part { name, "duration"; type, TEXT; mouse_events, 1;
+       description { state, "default" 0.0; color,  31 31 55 128;
+       text { text, "00:00"; font, "Edje.visitor1"; size, 9; align, 1.0 1.0; } }
+
+       description { state, "selected" 0.0; color,  31 31 55 255;
+       text { text, "00:00"; font, "Edje.visitor1"; size, 9; align, 1.0 1.0; } } }
diff --git a/data/themes/iio/collections/switch.edc b/data/themes/iio/collections/switch.edc
new file mode 100644 (file)
index 0000000..c6ae197
--- /dev/null
@@ -0,0 +1,219 @@
+               
+       part { name, "small_base"; type, IMAGE; mouse_events, 0;
+       description { state, "default" 0.0; max, 93 187; min, 93 187;   
+       rel1 { relative, 0.0 0.0; offset, 0 0; }                     
+       rel2 { relative, 1.0 1.0; offset, 0 0; }
+       image { normal, "small_base.png"; }
+       border, 3 3 10 20; fill { smooth, 0; } } } 
+//
+       part { name, "small_lcd"; type, IMAGE; mouse_events, 0;  
+       description { state, "default" 0.0; max, 93 71; min, 93 71; align, 0.0 0.0;     
+       rel1 { relative, 1.0  0.0; offset, 0 0; to, "small_base"; }                     
+       rel2 { relative, 1.0 1.0; offset, -1 0; to, "small_base"; }     
+       image { normal, "small_lcd.png"; } }
+
+       description { state, "active" 0.0; max, 93 71; min, 93 71; align, 0.0 0.0;      
+       rel1 { relative, 1.0  0.0; offset, 0 0; to, "small_base"; }                     
+       rel2 { relative, 1.0 1.0; offset, -1 0; to, "small_base"; }     
+       image { normal, "small_lcd_active.png"; } } }
+//
+       part { name, "a_stop_b"; type, IMAGE; mouse_events, 0;   
+       description { state, "default" 0.0; max, 89 25; min, 89 25; align, 0.0 0.0;            
+       rel1 { relative, 1.0  1.0; offset, 0 0; to, "small_base"; }                     
+       rel2 { relative, 1.0 1.0; offset, -3 -2; to, "small_base"; }       
+       image { normal, "s_b_stop.png"; } } }
+//
+       part { name, "a_prev_b"; type, IMAGE; mouse_events, 0;   
+       description { state, "default" 0.0; max, 25 41; min, 25 41; align, 0.0 0.0;             
+       rel1 { relative, 0.0 0.0; offset, -2 0; to, "a_stop_b"; }
+       rel2 { relative, 0.5 0.0; offset, 0 -1; to, "a_stop_b"; }              
+       image { normal, "s_b_prev.png"; } } }
+//
+       part { name, "a_play_b"; type, IMAGE; mouse_events, 0;   
+       description { state, "default" 0.0; max, 42 41; min,     42 41; align, 0.0 0.0;        
+       rel1 { relative, 1.0 1.0; offset, 0 0; to, "a_prev_b"; }                        
+       rel2 { relative, 1.0 1.0; offset,42 -1; to, "a_prev_b"; }              
+       image { normal, "s_b_play.png"; } } }
+//
+       part { name, "a_next_b"; type, IMAGE; mouse_events, 0;   
+       description { state, "default" 0.0; max, 26 41; min,     26 41; align, 0.0 0.0;        
+       rel1 { relative, 1.0 1.0; offset, 0 0; to, "a_play_b"; }                        
+       rel2 { relative, 1.0 1.0; offset,42 -1; to, "a_play_b"; }              
+       image { normal, "s_b_next.png"; } } }
+//
+       part { name, "a_pause_b"; type, IMAGE; mouse_events, 0;  
+       description { state, "default" 0.0; max, 93 25; min,     93 25; align, 0.0 0.0;       
+       rel1 { relative, 1.0 0.0; offset, 0 0; to, "a_play_b"; }                
+       rel2 { relative, 1.0 0.0; offset, 25 -1; to, "a_play_b"; }       
+       image { normal, "s_b_pause.png"; } } }
+
+       part { name, "peak_analyzer_img"; type, IMAGE; clip_to, "peak_analyzer_clip";
+       description { state, "default" 0.0; max, 63 32; min, 63 32; align, 0.0 0.0;
+
+       rel1 { relative, 0.5 1.0; offset, 0 0; to, "small_lcd"; }
+       rel2 { relative, 1.0 1.0; offset, -16 -13; to, "small_lcd"; }
+
+       image { normal, "a_s_lcd_011.png"; } } }
+
+       part { name, "peak_analyzer_clip"; type, RECT;
+       description { state, "default" 0.0;
+
+       rel1 { relative, 0.0 0.0; to, "peak_analyzer"; }
+       rel2 { relative, 1.0 1.0; to, "peak_analyzer"; } } }
+
+       part { name, "peak_analyzer_trough"; type, RECT; repeat_events, 1;
+       description { state, "default" 0.0; color, 0 0 0 0;
+
+       rel1 { relative, 0.0 0.0; to, "peak_analyzer_img"; }
+       rel2 { relative, 1.0 1.0; to, "peak_analyzer_img"; offset, 0 32; } } }
+
+       part { name, "peak_analyzer"; type, RECT; mouse_events, 0;
+       dragable { x, 0 0 0; y, 1 1 0; confine, "peak_analyzer_trough"; }
+       description { state, "default" 0.0; color, 0 0 0 0; min, 1 1;
+
+       rel1 { relative, 0.0 0.0; to, "peak_analyzer_img"; }
+       rel2 { relative, 1.0 1.0; to, "peak_analyzer_img"; } } }
+//
+       part { name, "time_text"; type, TEXT; mouse_events, 0;                     
+       description { state,  "default" 0.0;
+       rel1 { relative, 0.5 1.0; offset, -10 -3; to, "small_lcd"; }
+       rel2 { relative, 1.0 0.5; offset, 0 0; to, "small_lcd"; }
+       color,  31 31 55 255;
+       text { text, "0:00"; font, "Edje.visitor1"; size, 9; align, 0.0 0.0; } } }
+//
+       part { name, "_prev_button"; type, IMAGE; mouse_events, 1;          
+       description { state, "default" 0.0; max, 13 39; min, 13 39;                     
+       rel1 { relative, 0.0 0.0; offset, 0 0; to, "a_prev_b"; }
+       rel2 { relative, 1.0 1.0; offset, 9 0; to, "a_prev_b"; }                
+       image { normal, "previous_button.png"; } }
+
+       description { state, "hilited" 0.0; max, 13 39; min, 13 39;                     
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "a_prev_b"; }
+       rel2 { relative, 1.0 1.0; offset, 9 0; to, "a_prev_b"; }                
+       image { normal, "previous_button_hilited.png"; } }
+
+       description { state, "clicked" 0.0; max, 13 39; min, 13 39;                     
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "a_prev_b"; }
+       rel2 { relative, 1.0 1.0; offset, 9 0; to, "a_prev_b"; }                        
+       image { normal, "previous_button_clicked.png"; } } } 
+//
+       part { name, "_pause_button"; type, IMAGE; mouse_events, 1;         
+       description { state, "default" 0.0; max, 39 12; min, 39 12;                     
+       rel1 { relative, 0.0 0.0; offset, 0 0; to, "a_pause_b"; }                       
+       rel2 { relative, 1.0 1.0; offset, 0 8; to, "a_pause_b"; }                       
+       image { normal, "pause_button.png"; } }
+
+       description { state, "hilited" 0.0; max, 39 12; min, 39 12;                     
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "a_pause_b"; }
+       rel2 { relative, 1.0 1.0; offset, 0 8; to, "a_pause_b"; }               
+       image { normal, "pause_button_hilited.png"; } }
+
+       description { state, "clicked" 0.0; max, 39 12; min, 39 12;
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "a_pause_b"; }
+       rel2 { relative, 1.0 1.0; offset, 0 8; to, "a_pause_b"; }                       
+       image { normal, "pause_button_clicked.png"; } } } 
+//     
+       part { name, "_play_button"; type, IMAGE; mouse_events, 1;          
+       description { state, "default" 0.0; max, 23 23; min, 23 23;                     
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "a_play_b"; }
+       rel2 { relative, 1.0 1.0; offset, 0 0; to, "a_play_b"; }        
+       image { normal, "play_button.png"; }
+       border, 1 1 1 1; fill { smooth, 0; } }  
+       
+       description { state, "hilited" 0.0; max, 23 23; min, 23 23;                     
+       rel1 { relative, 0.0 0.0; offset, 0 0; to, "a_play_b"; }        
+       rel2 { relative, 1.0 1.0; offset, 0 0; to, "a_play_b"; }
+       image { normal, "play_button_hilited.png"; }            
+       border, 1 1 1 1;
+       fill { smooth, 1; } }
+
+       description { state, "clicked" 0.0; max, 23 23; min, 23 23;                     
+       rel1 { relative, 0.0 0.0; offset, 0 0; to, "a_play_b"; }
+       rel2 { relative, 1.0 1.0; offset, 0 0; to, "a_play_b"; }                
+       image { normal, "play_button_clicked.png"; }
+       border, 1 1 1 1;
+       fill { smooth, 0; } } }
+//
+       part { name, "_next_button"; type, IMAGE; mouse_events, 1;          
+       description { state, "default" 0.0; max, 13 39; min, 13 39;                     
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "a_next_b"; }
+       rel2 { relative, 1.0 1.0; offset, -9 0; to, "a_next_b"; }       
+       image { normal, "next_button.png"; } }
+
+       description { state, "hilited" 0.0; max, 13 39; min, 13 39;
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "a_next_b"; }
+       rel2 { relative, 1.0 1.0; offset, -9 0; to, "a_next_b"; }
+       image { normal, "next_button_hilited.png"; } }
+
+       description { state, "clicked" 0.0; max, 13 39; min, 13 39;
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "a_next_b"; }
+       rel2 { relative, 1.0 1.0; offset, -9 0; to, "a_next_b"; }               
+       image { normal, "next_button_clicked.png"; } } } 
+//
+       part { name, "_stop_button"; type, IMAGE; mouse_events, 1;          
+       description { state, "default" 0.0; max, 39 13; min, 39 13;                     
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "a_stop_b"; }
+       rel2 { relative, 1.0 1.0; offset, 0 -8; to, "a_stop_b"; }
+       image { normal, "stop_button.png"; } }
+
+       description { state, "hilited" 0.0; max, 39 13; min, 39 13;
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "a_stop_b"; }
+       rel2 { relative, 1.0 1.0; offset, 0 -8; to, "a_stop_b"; }       
+       image { normal, "stop_button_hilited.png"; } }
+
+       description { state, "clicked" 0.0; max, 39 13; min, 39 13;
+       rel1 { relative, 0.0  0.0; offset, 0 0; to, "a_stop_b"; }
+       rel2 { relative, 1.0 1.0; offset, 0 -8; to, "a_stop_b"; }                       
+       image { normal, "stop_button_clicked.png"; } } }
+//
+       part { name, "sw_base"; type, IMAGE; mouse_events, 1;    
+       description { state, "default" 0.0; max, 13 27; min, 13 27; align, 0.0 0.0;       
+       rel1 { relative, 0.5  1.0; offset, 0 0; to, "small_base"; }                     
+       rel2 { relative, 0.0 0.5; offset, 12 3; to, "small_base"; }       
+       image { normal, "switch_mode.png"; } }
+
+       description { state, "hilited" 0.0; max, 13 27; min, 13 27; align, 0.0 0.0;       
+       rel1 { relative, 0.5 1.0; offset, 0 0; to, "small_base"; }                      
+       rel2 { relative, 0.0 0.5; offset, 12 3; to, "small_base"; }       
+       image { normal, "switch_mode_hilited.png"; } }
+
+       description { state, "clicked" 0.0; max, 13 27; min, 13 27; align, 0.0 0.0;            
+       rel1 { relative, 0.5 1.0; offset, 0 0; to, "small_base"; }                      
+       rel2 { relative, 0.0 0.5; offset, 12 3; to, "small_base"; }       
+       image { normal, "switch_mode_clicked.png"; } } }
+//
+       part { name, "_quit"; type, IMAGE; mouse_events, 1;         
+       description { state, "default" 0.0; max, 22 22; min, 22 22;                     
+       rel1 { relative, 1.0  0.3; offset, 0 10; to, "small_base"; }                    
+       rel2 { relative, 0.5 0.5; offset, 13 3; to, "small_base"; }
+       image { normal, "close_mode_button_normal.png"; } }
+
+       description { state, "hilited" 0.0; max, 22 22; min, 22 22;                     
+       rel1 { relative, 1.0  0.3; offset, 0 10; to, "small_base"; }                    
+       rel2 { relative, 0.5 0.5; offset, 13 3; to, "small_base"; }
+       image { normal, "close_mode_button_hilited.png"; } }
+
+       description { state, "clicked" 0.0; max, 22 22; min, 22 22;                     
+       rel1 { relative, 1.0  0.3; offset, 0 10; to, "small_base"; }                    
+       rel2 { relative, 0.5 0.5; offset, 13 3; to, "small_base"; }
+       image { normal, "close_mode_button_clicked.png"; } } } 
+//
+       part { name, "strans_Rect"; type, RECT; mouse_events, 0;                     
+       description { state,  "default" 0.0; 
+       color, 252 252 254 255; 
+       min, 47 20; max, 47 20;
+       rel1 { relative, 0.5 0.5; offset, 0 15; to, "small_lcd"; }
+       rel2 { relative, 0.5 0.0; offset, 0 1; to, "small_lcd"; } }
+
+       description { state, "active" 0.0; 
+       color, 243 243 249 255; 
+       min, 47 20; max, 47 20;
+       rel1 { relative, 0.5 0.5; offset, 0 15; to, "small_lcd"; }
+       rel2 { relative, 0.5 0.0; offset, 0 1; to, "small_lcd"; } } }
+//             
+       part { name, "song_name"; type,   TEXT; mouse_events, 0;                      
+       description { state,  "default" 0.0;
+       rel1 { relative, 0.10 0.6; offset, 0 0; to, "strans_Rect"; }
+       rel2 { relative, 1.0 0.0; offset, 0 0; to, "strans_Rect"; }
+       color,  31 31 55 255;
+       text { text, "song"; font, "Edje.visitor1"; size, 9; align, 0.0 0.0; } } }
diff --git a/data/themes/iio/fonts/fonts.edc b/data/themes/iio/fonts/fonts.edc
new file mode 100644 (file)
index 0000000..f7566e8
--- /dev/null
@@ -0,0 +1,2 @@
+
+font, "visitor1.ttf" "Edje.visitor1";
diff --git a/data/themes/iio/fonts/visitor.txt b/data/themes/iio/fonts/visitor.txt
new file mode 100644 (file)
index 0000000..c2f57d8
--- /dev/null
@@ -0,0 +1,86 @@
+______________________________\r
+Visitor  Created by Brian Kent\r
+¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\r
+\r
+Thanks for Downloading Visitor.\r
+\r
+-Visitor TT1   [.ttf]\r
+-Visitor TT2   [.ttf]\r
+-Visitor [7pt] [.fon]\r
+\r
+  'Visitor.fon' is a Windows Bitmap Font (.fon).  This font is best\r
+used at 7pt.  To use it at larger point sizes (for images), try using\r
+a graphics program like Photo Shop, Paint Shop Pro, or the Paint\r
+program that comes with Windows.  Type out your text at the recommended\r
+point size [7pt], then resize the image.   Set the color mode to 256\r
+or 2 colors so the edges don't get blured when resizing, then after you\r
+have the text to the size that you want, then change back to a higher\r
+color mode and edit the image.\r
+\r
+  For programs that don't show Bitmap Fonts in the Font Selector, you\r
+may be able to get the font to work by typing in:\r
+visitor -brk-\r
+\r
+  The TTF versions were created different ways.  TT1 was created from\r
+within FontLab and TT2 was created in Illustrator then imported into\r
+FontLab.  I didn't know which one to include so I just included both.\r
+\r
+\r
+If you have any questions or comments, you can e-mail me at\r
+kentpw@norwich.net\r
+\r
+You can visit my Homepage <ÆNIGMA GAMES & FONTS> at\r
+http://www.aenigmafonts.com/\r
+\r
+____________\r
+!!! NOTE !!!\r
+¯¯¯¯¯¯¯¯¯¯¯¯\r
+This font has been updated!  I've edited the (BRK) in the font name\r
+to just BRK.  It seems that Adobe Illustrator and web pages with CSS\r
+don't like fonts with ( and ) in their name.\r
+\r
+________________\r
+INSTALLING FONTS\r
+¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\r
+  There's a couple of ways to install Fonts. The 'easy' way to\r
+install fonts is to just Unzip/place the font file(s) into your\r
+Windows\Fonts directory (I always use this method). If you're unable\r
+to do it the 'easy' way, then try to do it this way (for Windows\r
+95/98/NT):\r
+\r
+1] Unzip the Font(s) to a folder (or somewhere, just remember where\r
+you unzipped it) on your Computer.\r
+\r
+2] Next, click on the START button, then select SETTINGS then\r
+CONTROL PANEL.\r
+\r
+3] When the Control Panel Window pops up, Double Click on FONTS.\r
+\r
+4] When the FONTS window pops up, select File then Install New Font...\r
+\r
+5] A Add Fonts window will pop up, just go to the folder that you\r
+unzipped the Font(s) to, select the Font(s) and then click on OK.\r
+Now the Font(s) are installed.\r
+\r
+  Now you can use the Font(s) in programs the utilize Fonts.  Make\r
+sure that you install the font(s) first, then open up your apps\r
+(so the app will recognize the font).    Sometimes you'll have to\r
+wait until you computer 'auto-refreshes' for programs to recognize\r
+fonts (Windows is sometimes slow to do that).  You can refresh your\r
+computer quicker by going into Windows Explorer -or- My Computer and\r
+press F5 (or in the menubar select VIEW then REFRESH).\r
+\r
+\r
+__________\r
+DISCLAIMER\r
+¯¯¯¯¯¯¯¯¯¯\r
+-The font(s) in this zip file were created by me (Brian Kent).  All\r
+of my Fonts are Freeware, you can use them any way you want to\r
+(Personal use, Commercial use, or whatever).\r
+\r
+-If you have a Font related site and would like to offer my fonts on\r
+your site, go right ahead. All I ask is that you keep this text file\r
+intact with the Font.\r
+\r
+-You may not Sell or Distribute my Fonts for profit or alter them in\r
+any way without asking me first.  [e-mail -  kentpw@norwich.net]
\ No newline at end of file
diff --git a/data/themes/iio/fonts/visitor1.ttf b/data/themes/iio/fonts/visitor1.ttf
new file mode 100644 (file)
index 0000000..04ce123
Binary files /dev/null and b/data/themes/iio/fonts/visitor1.ttf differ
diff --git a/data/themes/iio/hashes/containers.edc b/data/themes/iio/hashes/containers.edc
new file mode 100644 (file)
index 0000000..7aeb7e9
--- /dev/null
@@ -0,0 +1,16 @@
+    /* boxtype, app id, container layout */
+    item, "e,fd,container,files,direction" "vertical";
+    item, "e,fd,container,directory,direction" "vertical";
+   
+    item, "e,fd,container,files,dragbar" "files_scrollbar";
+    item, "e,fd,container,directory,dragbar" "directory_scrollbar";
+    
+    item, "e,fd,container,files" "files_list";
+    item, "e,fd,container,directory" "directory_list";
+    
+    item, "e,fd,container,scrollbar,scroll,files" "files_list";
+    item, "e,fd,container,scrollbar,scroll,directory" "directory_list";
+   
+   /* unused :( */
+    item, "e,fd,container,files,spacing" "4";
+    item, "e,fd,container,directory,spacing" "4";
diff --git a/data/themes/iio/hashes/window.edc b/data/themes/iio/hashes/window.edc
new file mode 100644 (file)
index 0000000..c5f75e2
--- /dev/null
@@ -0,0 +1,3 @@
+    item, "e,fd,window,type" "shaped";
+    //item, "e,fd,window,type" "borderless";
+    //item, "e,fd,window,type" "trans";
diff --git a/data/themes/iio/iio.edc b/data/themes/iio/iio.edc
new file mode 100644 (file)
index 0000000..31862cd
--- /dev/null
@@ -0,0 +1,107 @@
+#include "../common.inc"
+
+#include "macros/vpanel.edc"
+#include "macros/fd_entity.edc"
+
+#define RIGHT "right-"
+#define LEFT "left-"
+
+       images { 
+#include "img/images.edc" 
+       }
+
+       fonts { 
+#include "fonts/fonts.edc"
+       }
+
+// author: tokyo
+// esmart.filedialog by atmos
+// iio for euphoria
+// various fixed by trill
+
+       collections { 
+       group { name, "euphoria"; min, 413 94; max, 413 94;
+
+       data {
+               item, "shaped" "you bet";
+       }
+
+       script {
+               public message (Msg_Type:type, id, ...)
+               {
+                       switch (id) {
+                               case MSG_ID_SET_SONGNAME: {
+                                       new buf[128];
+
+                                       if (type != MSG_STRING_SET || numargs () < 5)
+                                               return;
+
+                                       getsarg (2, buf, 128);
+                                       set_text (PART:"artist_name", buf);
+
+                                       getsarg (3, buf, 128);
+                                       set_text (PART:"song_name", buf);
+
+                                       getsarg (4, buf, 128);
+                                       set_text (PART:"album_name", buf);
+                               }
+                       }
+               }
+       }
+
+           parts { 
+#include "collections/base_to.edc" 
+           }
+           programs { 
+#include "programs/controls_to.edc" 
+           }
+       }
+
+       group { name, "playlist_item"; min, 122 9; max, 122 9;  
+       parts { 
+#include "collections/playlist.edc" 
+       }
+       programs { 
+#include "programs/playlist.edc" 
+           } 
+       }
+/*
+       group { name, "alternate"; min, 93 187; max, 93 187;
+       parts { 
+#include "collections/switch.edc" 
+           }
+       programs { 
+#include "programs/switch.edc" 
+           } 
+       }
+*/
+group { name, "esmart.filedialog"; min, 413 188; max, 413 9999;
+       data {
+#include "hashes/containers.edc"
+#include "hashes/window.edc"
+       }
+
+       parts { 
+#include "collections/esmart_fd.edc" 
+           }
+       programs { 
+#include "programs/esmart_fd.edc" 
+           } 
+       }
+       group { name, "esmart.filedialog.file"; min, 80 15; max, 800 15;
+           parts {
+               FD_ENTITY("file", 1.0 0.5)
+           }
+           programs {
+               FD_ENTITY_PROGS("file")
+           }
+       }
+       group { name, "esmart.filedialog.directory"; min, 80 15; max, 800 15;
+           parts {
+               FD_ENTITY("directory", 0.0 0.5)
+           }
+           programs {
+               FD_ENTITY_DIRECTORY_PROGS("directory")
+           }
+       }
+}
diff --git a/data/themes/iio/img/a_s_lcd.png b/data/themes/iio/img/a_s_lcd.png
new file mode 100644 (file)
index 0000000..f072c2f
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd.png differ
diff --git a/data/themes/iio/img/a_s_lcd_01.png b/data/themes/iio/img/a_s_lcd_01.png
new file mode 100644 (file)
index 0000000..90c35b9
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_01.png differ
diff --git a/data/themes/iio/img/a_s_lcd_010.png b/data/themes/iio/img/a_s_lcd_010.png
new file mode 100644 (file)
index 0000000..0610924
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_010.png differ
diff --git a/data/themes/iio/img/a_s_lcd_011.png b/data/themes/iio/img/a_s_lcd_011.png
new file mode 100644 (file)
index 0000000..3153283
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_011.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0112.png b/data/themes/iio/img/a_s_lcd_0112.png
new file mode 100644 (file)
index 0000000..b3637d4
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0112.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0113.png b/data/themes/iio/img/a_s_lcd_0113.png
new file mode 100644 (file)
index 0000000..ec2959b
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0113.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0114.png b/data/themes/iio/img/a_s_lcd_0114.png
new file mode 100644 (file)
index 0000000..5dab751
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0114.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0115.png b/data/themes/iio/img/a_s_lcd_0115.png
new file mode 100644 (file)
index 0000000..bdce4ec
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0115.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0116.png b/data/themes/iio/img/a_s_lcd_0116.png
new file mode 100644 (file)
index 0000000..7d1d74d
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0116.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0117.png b/data/themes/iio/img/a_s_lcd_0117.png
new file mode 100644 (file)
index 0000000..f00784e
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0117.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0118.png b/data/themes/iio/img/a_s_lcd_0118.png
new file mode 100644 (file)
index 0000000..3774c87
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0118.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0119.png b/data/themes/iio/img/a_s_lcd_0119.png
new file mode 100644 (file)
index 0000000..53ed3bd
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0119.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0120.png b/data/themes/iio/img/a_s_lcd_0120.png
new file mode 100644 (file)
index 0000000..5ba1673
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0120.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0121.png b/data/themes/iio/img/a_s_lcd_0121.png
new file mode 100644 (file)
index 0000000..ee983d8
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0121.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0122.png b/data/themes/iio/img/a_s_lcd_0122.png
new file mode 100644 (file)
index 0000000..16ed215
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0122.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0123.png b/data/themes/iio/img/a_s_lcd_0123.png
new file mode 100644 (file)
index 0000000..08b2626
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0123.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0124.png b/data/themes/iio/img/a_s_lcd_0124.png
new file mode 100644 (file)
index 0000000..beb027a
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0124.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0125.png b/data/themes/iio/img/a_s_lcd_0125.png
new file mode 100644 (file)
index 0000000..03a5ea7
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0125.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0126.png b/data/themes/iio/img/a_s_lcd_0126.png
new file mode 100644 (file)
index 0000000..e0c4b8e
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0126.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0127.png b/data/themes/iio/img/a_s_lcd_0127.png
new file mode 100644 (file)
index 0000000..fbb2b00
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0127.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0128.png b/data/themes/iio/img/a_s_lcd_0128.png
new file mode 100644 (file)
index 0000000..5b01422
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0128.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0129.png b/data/themes/iio/img/a_s_lcd_0129.png
new file mode 100644 (file)
index 0000000..f18600c
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0129.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0130.png b/data/themes/iio/img/a_s_lcd_0130.png
new file mode 100644 (file)
index 0000000..98129a0
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0130.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0131.png b/data/themes/iio/img/a_s_lcd_0131.png
new file mode 100644 (file)
index 0000000..a70691b
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0131.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0132.png b/data/themes/iio/img/a_s_lcd_0132.png
new file mode 100644 (file)
index 0000000..79933bc
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0132.png differ
diff --git a/data/themes/iio/img/a_s_lcd_0133.png b/data/themes/iio/img/a_s_lcd_0133.png
new file mode 100644 (file)
index 0000000..7f1ca7a
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_0133.png differ
diff --git a/data/themes/iio/img/a_s_lcd_02.png b/data/themes/iio/img/a_s_lcd_02.png
new file mode 100644 (file)
index 0000000..cb1ee41
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_02.png differ
diff --git a/data/themes/iio/img/a_s_lcd_03.png b/data/themes/iio/img/a_s_lcd_03.png
new file mode 100644 (file)
index 0000000..c2213b6
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_03.png differ
diff --git a/data/themes/iio/img/a_s_lcd_04.png b/data/themes/iio/img/a_s_lcd_04.png
new file mode 100644 (file)
index 0000000..6374f79
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_04.png differ
diff --git a/data/themes/iio/img/a_s_lcd_05.png b/data/themes/iio/img/a_s_lcd_05.png
new file mode 100644 (file)
index 0000000..b5cc2f9
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_05.png differ
diff --git a/data/themes/iio/img/a_s_lcd_06.png b/data/themes/iio/img/a_s_lcd_06.png
new file mode 100644 (file)
index 0000000..28451f8
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_06.png differ
diff --git a/data/themes/iio/img/a_s_lcd_07.png b/data/themes/iio/img/a_s_lcd_07.png
new file mode 100644 (file)
index 0000000..b06808b
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_07.png differ
diff --git a/data/themes/iio/img/a_s_lcd_08.png b/data/themes/iio/img/a_s_lcd_08.png
new file mode 100644 (file)
index 0000000..25e4ed0
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_08.png differ
diff --git a/data/themes/iio/img/a_s_lcd_09.png b/data/themes/iio/img/a_s_lcd_09.png
new file mode 100644 (file)
index 0000000..6310c29
Binary files /dev/null and b/data/themes/iio/img/a_s_lcd_09.png differ
diff --git a/data/themes/iio/img/add_track.png b/data/themes/iio/img/add_track.png
new file mode 100644 (file)
index 0000000..eb4079e
Binary files /dev/null and b/data/themes/iio/img/add_track.png differ
diff --git a/data/themes/iio/img/add_track_clicked.png b/data/themes/iio/img/add_track_clicked.png
new file mode 100644 (file)
index 0000000..c231086
Binary files /dev/null and b/data/themes/iio/img/add_track_clicked.png differ
diff --git a/data/themes/iio/img/add_track_hilited.png b/data/themes/iio/img/add_track_hilited.png
new file mode 100644 (file)
index 0000000..bc1903e
Binary files /dev/null and b/data/themes/iio/img/add_track_hilited.png differ
diff --git a/data/themes/iio/img/align_bottom.png b/data/themes/iio/img/align_bottom.png
new file mode 100644 (file)
index 0000000..0510ac1
Binary files /dev/null and b/data/themes/iio/img/align_bottom.png differ
diff --git a/data/themes/iio/img/align_center.png b/data/themes/iio/img/align_center.png
new file mode 100644 (file)
index 0000000..8f76c4b
Binary files /dev/null and b/data/themes/iio/img/align_center.png differ
diff --git a/data/themes/iio/img/align_left.png b/data/themes/iio/img/align_left.png
new file mode 100644 (file)
index 0000000..81ef965
Binary files /dev/null and b/data/themes/iio/img/align_left.png differ
diff --git a/data/themes/iio/img/align_right.png b/data/themes/iio/img/align_right.png
new file mode 100644 (file)
index 0000000..86b7cf7
Binary files /dev/null and b/data/themes/iio/img/align_right.png differ
diff --git a/data/themes/iio/img/align_top.png b/data/themes/iio/img/align_top.png
new file mode 100644 (file)
index 0000000..dd6bc7d
Binary files /dev/null and b/data/themes/iio/img/align_top.png differ
diff --git a/data/themes/iio/img/arrow_down.png b/data/themes/iio/img/arrow_down.png
new file mode 100644 (file)
index 0000000..70c5e06
Binary files /dev/null and b/data/themes/iio/img/arrow_down.png differ
diff --git a/data/themes/iio/img/arrow_up.png b/data/themes/iio/img/arrow_up.png
new file mode 100644 (file)
index 0000000..c3df0e7
Binary files /dev/null and b/data/themes/iio/img/arrow_up.png differ
diff --git a/data/themes/iio/img/bar_delay_clicked.png b/data/themes/iio/img/bar_delay_clicked.png
new file mode 100644 (file)
index 0000000..9e3d0cc
Binary files /dev/null and b/data/themes/iio/img/bar_delay_clicked.png differ
diff --git a/data/themes/iio/img/bar_delay_hilited.png b/data/themes/iio/img/bar_delay_hilited.png
new file mode 100644 (file)
index 0000000..29a8403
Binary files /dev/null and b/data/themes/iio/img/bar_delay_hilited.png differ
diff --git a/data/themes/iio/img/bar_delay_left.png b/data/themes/iio/img/bar_delay_left.png
new file mode 100644 (file)
index 0000000..c424c65
Binary files /dev/null and b/data/themes/iio/img/bar_delay_left.png differ
diff --git a/data/themes/iio/img/bar_delay_right.png b/data/themes/iio/img/bar_delay_right.png
new file mode 100644 (file)
index 0000000..50780a5
Binary files /dev/null and b/data/themes/iio/img/bar_delay_right.png differ
diff --git a/data/themes/iio/img/bar_delay_right_clicked.png b/data/themes/iio/img/bar_delay_right_clicked.png
new file mode 100644 (file)
index 0000000..6310046
Binary files /dev/null and b/data/themes/iio/img/bar_delay_right_clicked.png differ
diff --git a/data/themes/iio/img/bar_delay_right_hilited.png b/data/themes/iio/img/bar_delay_right_hilited.png
new file mode 100644 (file)
index 0000000..71adb40
Binary files /dev/null and b/data/themes/iio/img/bar_delay_right_hilited.png differ
diff --git a/data/themes/iio/img/base_anim.png b/data/themes/iio/img/base_anim.png
new file mode 100644 (file)
index 0000000..440a360
Binary files /dev/null and b/data/themes/iio/img/base_anim.png differ
diff --git a/data/themes/iio/img/base_layer.png b/data/themes/iio/img/base_layer.png
new file mode 100644 (file)
index 0000000..c94b1df
Binary files /dev/null and b/data/themes/iio/img/base_layer.png differ
diff --git a/data/themes/iio/img/bullet.png b/data/themes/iio/img/bullet.png
new file mode 100644 (file)
index 0000000..6aa34c1
Binary files /dev/null and b/data/themes/iio/img/bullet.png differ
diff --git a/data/themes/iio/img/close_button.png b/data/themes/iio/img/close_button.png
new file mode 100644 (file)
index 0000000..5c1feed
Binary files /dev/null and b/data/themes/iio/img/close_button.png differ
diff --git a/data/themes/iio/img/close_button_clicked.png b/data/themes/iio/img/close_button_clicked.png
new file mode 100644 (file)
index 0000000..9607e11
Binary files /dev/null and b/data/themes/iio/img/close_button_clicked.png differ
diff --git a/data/themes/iio/img/close_button_hilited.png b/data/themes/iio/img/close_button_hilited.png
new file mode 100644 (file)
index 0000000..6d4cc55
Binary files /dev/null and b/data/themes/iio/img/close_button_hilited.png differ
diff --git a/data/themes/iio/img/close_mode_button_clicked.png b/data/themes/iio/img/close_mode_button_clicked.png
new file mode 100644 (file)
index 0000000..35c53ae
Binary files /dev/null and b/data/themes/iio/img/close_mode_button_clicked.png differ
diff --git a/data/themes/iio/img/close_mode_button_hilited.png b/data/themes/iio/img/close_mode_button_hilited.png
new file mode 100644 (file)
index 0000000..9388afb
Binary files /dev/null and b/data/themes/iio/img/close_mode_button_hilited.png differ
diff --git a/data/themes/iio/img/close_mode_button_normal.png b/data/themes/iio/img/close_mode_button_normal.png
new file mode 100644 (file)
index 0000000..bc4423b
Binary files /dev/null and b/data/themes/iio/img/close_mode_button_normal.png differ
diff --git a/data/themes/iio/img/delete_track.png b/data/themes/iio/img/delete_track.png
new file mode 100644 (file)
index 0000000..b5c7b8d
Binary files /dev/null and b/data/themes/iio/img/delete_track.png differ
diff --git a/data/themes/iio/img/delete_track_clicked.png b/data/themes/iio/img/delete_track_clicked.png
new file mode 100644 (file)
index 0000000..75c2e74
Binary files /dev/null and b/data/themes/iio/img/delete_track_clicked.png differ
diff --git a/data/themes/iio/img/delete_track_hilited.png b/data/themes/iio/img/delete_track_hilited.png
new file mode 100644 (file)
index 0000000..3759e00
Binary files /dev/null and b/data/themes/iio/img/delete_track_hilited.png differ
diff --git a/data/themes/iio/img/edit_track.png b/data/themes/iio/img/edit_track.png
new file mode 100644 (file)
index 0000000..fb04d0f
Binary files /dev/null and b/data/themes/iio/img/edit_track.png differ
diff --git a/data/themes/iio/img/edit_track_clicked.png b/data/themes/iio/img/edit_track_clicked.png
new file mode 100644 (file)
index 0000000..d7ea305
Binary files /dev/null and b/data/themes/iio/img/edit_track_clicked.png differ
diff --git a/data/themes/iio/img/edit_track_hilited.png b/data/themes/iio/img/edit_track_hilited.png
new file mode 100644 (file)
index 0000000..4e6b2d5
Binary files /dev/null and b/data/themes/iio/img/edit_track_hilited.png differ
diff --git a/data/themes/iio/img/h_arrow.png b/data/themes/iio/img/h_arrow.png
new file mode 100644 (file)
index 0000000..28c0b0d
Binary files /dev/null and b/data/themes/iio/img/h_arrow.png differ
diff --git a/data/themes/iio/img/images.edc b/data/themes/iio/img/images.edc
new file mode 100644 (file)
index 0000000..b390832
--- /dev/null
@@ -0,0 +1,101 @@
+// Syntax: images { image "name" COMPRESSION_TYPE; }
+
+       image, "seeker_bar.png" RAW; 
+       image, "seeker_trough.png" RAW;
+       image, "small_base.png" LOSSY 98; 
+       image, "small_lcd.png" LOSSY 98;
+       image, "small_lcd_active.png" LOSSY 98;
+       image, "base_layer.png" LOSSY 98;
+       image, "lcd_window.png" LOSSY 98; 
+       image, "bullet.png" LOSSY 98;
+       image, "h_arrow.png" LOSSY 98; 
+       image, "s_b_pause.png" RAW; 
+       image, "s_b_prev.png" RAW; 
+       image, "s_b_play.png" RAW;
+       image, "s_b_next.png" RAW; 
+       image, "s_b_stop.png" RAW; 
+       /* unused
+       image, "a_s_lcd.png" LOSSY 98;   
+       image, "a_s_lcd_01.png" LOSSY 98; 
+       image, "a_s_lcd_02.png" LOSSY 98; 
+       image, "a_s_lcd_03.png" LOSSY 98; 
+       image, "a_s_lcd_04.png" LOSSY 98; 
+       image, "a_s_lcd_05.png" LOSSY 98;       
+       image, "a_s_lcd_06.png" LOSSY 98; 
+       image, "a_s_lcd_07.png" LOSSY 98;       
+       image, "a_s_lcd_08.png" LOSSY 98; 
+       image, "a_s_lcd_09.png" LOSSY 98;       
+       image, "a_s_lcd_010.png" LOSSY 98;*/ 
+       image, "a_s_lcd_011.png" LOSSY 98;      
+       /* unused
+       image, "a_s_lcd_0112.png" LOSSY 98; 
+       image, "a_s_lcd_0113.png" LOSSY 98; 
+       image, "a_s_lcd_0114.png" LOSSY 98; 
+       image, "a_s_lcd_0115.png" LOSSY 98; 
+       image, "a_s_lcd_0116.png" LOSSY 98; 
+       image, "a_s_lcd_0117.png" LOSSY 98; 
+       image, "a_s_lcd_0118.png" LOSSY 98; 
+       image, "a_s_lcd_0119.png" LOSSY 98;     
+       image, "a_s_lcd_0120.png" LOSSY 98; 
+       image, "a_s_lcd_0121.png" LOSSY 98;     
+       image, "a_s_lcd_0122.png" LOSSY 98; 
+       image, "a_s_lcd_0123.png" LOSSY 98;     
+       image, "a_s_lcd_0124.png" LOSSY 98; 
+       image, "a_s_lcd_0125.png" LOSSY 98;     
+       image, "a_s_lcd_0126.png" LOSSY 98; 
+       image, "a_s_lcd_0127.png" LOSSY 98;     
+       image, "a_s_lcd_0128.png" LOSSY 98; 
+       image, "a_s_lcd_0129.png" LOSSY 98;     
+       image, "a_s_lcd_0130.png" LOSSY 98; 
+       image, "a_s_lcd_0131.png" LOSSY 98;     
+       image, "a_s_lcd_0132.png" LOSSY 98; 
+       image, "a_s_lcd_0133.png" LOSSY 98;*/   
+       image, "bar_delay_left.png" LOSSY 98;
+       image, "bar_delay_right.png" LOSSY 98;
+       image, "align_top.png" LOSSY 98;
+       image, "align_left.png" LOSSY 98;
+       image, "align_center.png" LOSSY 98;
+       image, "align_right.png" LOSSY 98;
+       image, "align_bottom.png" LOSSY 98;
+       image, "previous_button.png" RAW;
+       image, "previous_button_hilited.png" RAW;
+       image, "previous_button_clicked.png" RAW;
+       image, "pause_button.png" RAW;
+       image, "pause_button_hilited.png" RAW;
+       image, "pause_button_clicked.png" RAW;
+       image, "play_button.png" RAW;
+       image, "play_button_hilited.png" RAW;
+       image, "play_button_clicked.png" RAW;
+       image, "next_button.png" RAW;
+       image, "next_button_hilited.png" RAW;
+       image, "next_button_clicked.png" RAW;
+       image, "stop_button.png" RAW;
+       image, "stop_button_hilited.png" RAW;
+       image, "stop_button_clicked.png" RAW;
+       image, "switch_mode.png" LOSSY 98;
+       image, "switch_mode_hilited.png" LOSSY 98;
+       image, "switch_mode_clicked.png" LOSSY 98;
+       image, "close_mode_button_normal.png" LOSSY 98;
+       image, "close_mode_button_hilited.png" LOSSY 98;
+       image, "close_mode_button_clicked.png" LOSSY 98;        
+       image, "close_button.png" LOSSY 98;
+       image, "close_button_hilited.png" LOSSY 98;
+       image, "close_button_clicked.png" LOSSY 98;
+       image, "switch_button.png" LOSSY 98;
+       image, "switch_button_hilited.png" LOSSY 98;
+       image, "switch_button_clicked.png" LOSSY 98;
+       image, "add_track.png" LOSSY 98;
+       image, "add_track_hilited.png" LOSSY 98;
+       image, "add_track_clicked.png" LOSSY 98;
+       image, "delete_track.png" LOSSY 98;
+       image, "delete_track_hilited.png" LOSSY 98;
+       image, "delete_track_clicked.png" LOSSY 98;
+       image, "edit_track.png" LOSSY 98;
+       image, "edit_track_hilited.png" LOSSY 98;
+       image, "edit_track_clicked.png" LOSSY 98;
+       image, "arrow_up.png" LOSSY 98;
+       image, "arrow_down.png" LOSSY 98;
+       image, "v_scrollbar.png" LOSSY 98;
+       image, "v_scrollbar_base.png" LOSSY 98;
+
+
diff --git a/data/themes/iio/img/lcd_window.png b/data/themes/iio/img/lcd_window.png
new file mode 100644 (file)
index 0000000..c504462
Binary files /dev/null and b/data/themes/iio/img/lcd_window.png differ
diff --git a/data/themes/iio/img/left_panel.png b/data/themes/iio/img/left_panel.png
new file mode 100644 (file)
index 0000000..14c043f
Binary files /dev/null and b/data/themes/iio/img/left_panel.png differ
diff --git a/data/themes/iio/img/next_button.png b/data/themes/iio/img/next_button.png
new file mode 100644 (file)
index 0000000..fff2a02
Binary files /dev/null and b/data/themes/iio/img/next_button.png differ
diff --git a/data/themes/iio/img/next_button_clicked.png b/data/themes/iio/img/next_button_clicked.png
new file mode 100644 (file)
index 0000000..52ae02d
Binary files /dev/null and b/data/themes/iio/img/next_button_clicked.png differ
diff --git a/data/themes/iio/img/next_button_hilited.png b/data/themes/iio/img/next_button_hilited.png
new file mode 100644 (file)
index 0000000..5efea67
Binary files /dev/null and b/data/themes/iio/img/next_button_hilited.png differ
diff --git a/data/themes/iio/img/pause_button.png b/data/themes/iio/img/pause_button.png
new file mode 100644 (file)
index 0000000..d6513f3
Binary files /dev/null and b/data/themes/iio/img/pause_button.png differ
diff --git a/data/themes/iio/img/pause_button_clicked.png b/data/themes/iio/img/pause_button_clicked.png
new file mode 100644 (file)
index 0000000..c02b3ad
Binary files /dev/null and b/data/themes/iio/img/pause_button_clicked.png differ
diff --git a/data/themes/iio/img/pause_button_hilited.png b/data/themes/iio/img/pause_button_hilited.png
new file mode 100644 (file)
index 0000000..698afa0
Binary files /dev/null and b/data/themes/iio/img/pause_button_hilited.png differ
diff --git a/data/themes/iio/img/play_button.png b/data/themes/iio/img/play_button.png
new file mode 100644 (file)
index 0000000..8bee5cd
Binary files /dev/null and b/data/themes/iio/img/play_button.png differ
diff --git a/data/themes/iio/img/play_button_clicked.png b/data/themes/iio/img/play_button_clicked.png
new file mode 100644 (file)
index 0000000..5a7f8d4
Binary files /dev/null and b/data/themes/iio/img/play_button_clicked.png differ
diff --git a/data/themes/iio/img/play_button_hilited.png b/data/themes/iio/img/play_button_hilited.png
new file mode 100644 (file)
index 0000000..ec17aa8
Binary files /dev/null and b/data/themes/iio/img/play_button_hilited.png differ
diff --git a/data/themes/iio/img/previous_button.png b/data/themes/iio/img/previous_button.png
new file mode 100644 (file)
index 0000000..2431a9a
Binary files /dev/null and b/data/themes/iio/img/previous_button.png differ
diff --git a/data/themes/iio/img/previous_button_clicked.png b/data/themes/iio/img/previous_button_clicked.png
new file mode 100644 (file)
index 0000000..07430ed
Binary files /dev/null and b/data/themes/iio/img/previous_button_clicked.png differ
diff --git a/data/themes/iio/img/previous_button_hilited.png b/data/themes/iio/img/previous_button_hilited.png
new file mode 100644 (file)
index 0000000..7e5cad0
Binary files /dev/null and b/data/themes/iio/img/previous_button_hilited.png differ
diff --git a/data/themes/iio/img/right_panel.png b/data/themes/iio/img/right_panel.png
new file mode 100644 (file)
index 0000000..6ded5cf
Binary files /dev/null and b/data/themes/iio/img/right_panel.png differ
diff --git a/data/themes/iio/img/s_b_next.png b/data/themes/iio/img/s_b_next.png
new file mode 100644 (file)
index 0000000..a0a55e3
Binary files /dev/null and b/data/themes/iio/img/s_b_next.png differ
diff --git a/data/themes/iio/img/s_b_pause.png b/data/themes/iio/img/s_b_pause.png
new file mode 100644 (file)
index 0000000..22fbb82
Binary files /dev/null and b/data/themes/iio/img/s_b_pause.png differ
diff --git a/data/themes/iio/img/s_b_play.png b/data/themes/iio/img/s_b_play.png
new file mode 100644 (file)
index 0000000..1f63439
Binary files /dev/null and b/data/themes/iio/img/s_b_play.png differ
diff --git a/data/themes/iio/img/s_b_prev.png b/data/themes/iio/img/s_b_prev.png
new file mode 100644 (file)
index 0000000..3b89ae1
Binary files /dev/null and b/data/themes/iio/img/s_b_prev.png differ
diff --git a/data/themes/iio/img/s_b_stop.png b/data/themes/iio/img/s_b_stop.png
new file mode 100644 (file)
index 0000000..3faee58
Binary files /dev/null and b/data/themes/iio/img/s_b_stop.png differ
diff --git a/data/themes/iio/img/seeker_bar.png b/data/themes/iio/img/seeker_bar.png
new file mode 100644 (file)
index 0000000..1893f78
Binary files /dev/null and b/data/themes/iio/img/seeker_bar.png differ
diff --git a/data/themes/iio/img/seeker_trough.png b/data/themes/iio/img/seeker_trough.png
new file mode 100644 (file)
index 0000000..252e3c0
Binary files /dev/null and b/data/themes/iio/img/seeker_trough.png differ
diff --git a/data/themes/iio/img/small_base.png b/data/themes/iio/img/small_base.png
new file mode 100644 (file)
index 0000000..35c02ce
Binary files /dev/null and b/data/themes/iio/img/small_base.png differ
diff --git a/data/themes/iio/img/small_lcd.png b/data/themes/iio/img/small_lcd.png
new file mode 100644 (file)
index 0000000..fb7818c
Binary files /dev/null and b/data/themes/iio/img/small_lcd.png differ
diff --git a/data/themes/iio/img/small_lcd_active.png b/data/themes/iio/img/small_lcd_active.png
new file mode 100644 (file)
index 0000000..006406c
Binary files /dev/null and b/data/themes/iio/img/small_lcd_active.png differ
diff --git a/data/themes/iio/img/stop_button.png b/data/themes/iio/img/stop_button.png
new file mode 100644 (file)
index 0000000..a1f3aaa
Binary files /dev/null and b/data/themes/iio/img/stop_button.png differ
diff --git a/data/themes/iio/img/stop_button_clicked.png b/data/themes/iio/img/stop_button_clicked.png
new file mode 100644 (file)
index 0000000..dbafd07
Binary files /dev/null and b/data/themes/iio/img/stop_button_clicked.png differ
diff --git a/data/themes/iio/img/stop_button_hilited.png b/data/themes/iio/img/stop_button_hilited.png
new file mode 100644 (file)
index 0000000..507d5d4
Binary files /dev/null and b/data/themes/iio/img/stop_button_hilited.png differ
diff --git a/data/themes/iio/img/switch_button.png b/data/themes/iio/img/switch_button.png
new file mode 100644 (file)
index 0000000..0551a9f
Binary files /dev/null and b/data/themes/iio/img/switch_button.png differ
diff --git a/data/themes/iio/img/switch_button_clicked.png b/data/themes/iio/img/switch_button_clicked.png
new file mode 100644 (file)
index 0000000..15838b4
Binary files /dev/null and b/data/themes/iio/img/switch_button_clicked.png differ
diff --git a/data/themes/iio/img/switch_button_hilited.png b/data/themes/iio/img/switch_button_hilited.png
new file mode 100644 (file)
index 0000000..5e0b183
Binary files /dev/null and b/data/themes/iio/img/switch_button_hilited.png differ
diff --git a/data/themes/iio/img/switch_mode.png b/data/themes/iio/img/switch_mode.png
new file mode 100644 (file)
index 0000000..7dcd1ee
Binary files /dev/null and b/data/themes/iio/img/switch_mode.png differ
diff --git a/data/themes/iio/img/switch_mode_clicked.png b/data/themes/iio/img/switch_mode_clicked.png
new file mode 100644 (file)
index 0000000..563db9a
Binary files /dev/null and b/data/themes/iio/img/switch_mode_clicked.png differ
diff --git a/data/themes/iio/img/switch_mode_hilited.png b/data/themes/iio/img/switch_mode_hilited.png
new file mode 100644 (file)
index 0000000..36c827a
Binary files /dev/null and b/data/themes/iio/img/switch_mode_hilited.png differ
diff --git a/data/themes/iio/img/v_scrollbar.png b/data/themes/iio/img/v_scrollbar.png
new file mode 100644 (file)
index 0000000..8e905f4
Binary files /dev/null and b/data/themes/iio/img/v_scrollbar.png differ
diff --git a/data/themes/iio/img/v_scrollbar_base.png b/data/themes/iio/img/v_scrollbar_base.png
new file mode 100644 (file)
index 0000000..cdbd93c
Binary files /dev/null and b/data/themes/iio/img/v_scrollbar_base.png differ
diff --git a/data/themes/iio/macros/fd_entity.edc b/data/themes/iio/macros/fd_entity.edc
new file mode 100644 (file)
index 0000000..2030ece
--- /dev/null
@@ -0,0 +1,67 @@
+#define FD_ENTITY(pname, talign) \
+part { name, pname".name"; type, TEXT; mouse_events, 0; effect, NONE; \
+    description { \
+       state, "default" 0.0; visible, 1; \
+    rel1 { relative, 0.0 0.0; offset, 5 0; } \
+    rel2 { relative, 1.0 1.0; offset, -5 0; } \
+    color, 150 150 160 255; text {text,"";font,"Edje.visitor1"; \
+    size, 9; align, talign; fit, 0 0; } } \
+    description { \
+       state, "hilited" 0.0; visible, 1; \
+       rel1 { relative, 0.0 0.0; offset, 5 0; } \
+       rel2 { relative, 1.0 1.0; offset, -5 0; } \
+       color, 31 31 55 255; \
+       text {text,"";font,"Edje.visitor1"; size, 9; align, talign; fit, 0 0; } } \
+     } \
+part { name, "base"; type, RECT; mouse_events, 1; repeat_events, 1; \
+    description { state, "default" 0.0; visible, 1; \
+    rel1 { relative, 0.0 0.0; offset, 0 0; } \
+    rel2 { relative, 1.0 1.0; offset, 0 0; } \
+    color, 255 255 255 0; } \
+    description { state, "hilited" 0.0; visible, 1; \
+    rel1 { relative, 0.0 0.0; offset, 0 0; } \
+    rel2 { relative, 1.0 1.0; offset, 0 0; } \
+    color, 100 100 100 0; } } 
+#define FD_ENTITY_PROGS(pname) \
+program { name, pname"_fd_right_clicked"; signal, "mouse,clicked,3"; \
+    source, "base"; action, SIGNAL_EMIT "e,fd,"pname",unselected" ""; } \
+program { name, pname"_fd_double_clicked"; signal, "mouse,down,1,double"; \
+    source, "base"; action, SIGNAL_EMIT "e,fd,"pname",load" ""; } \
+program { name, pname"_fd_clicked_kill"; signal, "mouse,down,1,double"; \
+    source, "base"; action, ACTION_STOP; target, pname"_fd_clicked";  } \
+program { name, pname"_fd_clicked"; signal, "mouse,down,1"; \
+    source, "base"; action, SIGNAL_EMIT "e,fd,"pname",selected" ""; \
+    in, 0.25 0.0; } \
+program { name, pname"_file_mouse_in_stop"; signal, "mouse,in"; \
+    source, "base"; action, ACTION_STOP; target, pname"_file_mouse_out"; } \
+program { name, pname"_file_mouse_in_start"; signal, "mouse,in"; \
+    source, "base"; action, STATE_SET "hilited" 0.0; target, "base"; \
+    target, pname".name"; transition, ACCELERATE 0.25; } \
+program { name, pname"_file_mouse_out"; signal, "mouse,out"; \
+    source, "base"; action, STATE_SET "default" 0.0; target, "base"; \
+    target, pname".name"; transition, DECELERATE 0.25; in, 0.25 0.0; }
+#define FD_ENTITY_DIRECTORY_PROGS(pname) \
+program { name, pname"_fd_dir_triple_clicked"; signal, "mouse,down,1,triple"; \
+    source, "base"; action, SIGNAL_EMIT "e,fd,"pname",load,recursive" ""; } \
+program { name, pname"_fd_dir_double_clicked_kill"; \
+    signal, "mouse,down,1,triple"; source, "base"; \
+    action, ACTION_STOP; target, pname"_fd_dir_double_clicked"; \
+    target, pname"_fd_dir_clicked"; } \
+program { name, pname"_fd_dir_right_clicked"; signal, "mouse,clicked,3"; \
+    source, "base"; action, SIGNAL_EMIT "e,fd,"pname",unselected" ""; } \
+program { name, pname"_fd_dir_double_clicked"; signal, "mouse,down,1,double"; \
+    source, "base"; action, SIGNAL_EMIT "e,fd,"pname",load" ""; in, 0.25 0.0; } \
+program { name, pname"_fd_dir_clicked_kill"; \
+    signal, "mouse,down,1,double"; source, "base"; \
+    action, ACTION_STOP; target, pname"_fd_dir_clicked"; } \
+program { name, pname"_fd_dir_clicked"; signal, "mouse,down,1"; \
+    source, "base"; action, SIGNAL_EMIT "e,fd,"pname",selected" ""; \
+    in, 0.25 0.0; } \
+program { name, pname"_file_dir_mouse_in_stop"; signal, "mouse,in"; \
+    source, "base"; action, ACTION_STOP; target, pname"_file_dir_mouse_out"; } \
+program { name, pname"_file_dir_mouse_in_start"; signal, "mouse,in"; \
+    source, "base"; action, STATE_SET "hilited" 0.0; target, "base"; \
+    target, pname".name"; transition, ACCELERATE 0.25; } \
+program { name, pname"_file_dir_mouse_out"; signal, "mouse,out"; \
+    source, "base"; action, STATE_SET "default" 0.0; target, "base"; \
+    target, pname".name"; transition, DECELERATE 0.25; in, 0.25 0.0; }
diff --git a/data/themes/iio/macros/vpanel.edc b/data/themes/iio/macros/vpanel.edc
new file mode 100644 (file)
index 0000000..5a1ee3b
--- /dev/null
@@ -0,0 +1,410 @@
+#define V_PREV_REL(NAME) \
+    rel1 { to, NAME"_scrollbar_trough_img"; relative, 0.5 0.0; offset, -7 -14; } \
+    rel2 { to, NAME"_scrollbar_trough_img"; relative, 0.5 0.0; offset, 7 0; } 
+#define V_NEXT_REL(NAME) \
+    rel1 { to, NAME"_scrollbar_trough_img"; relative, 0.0 1.0; offset,  -7 0; } \
+    rel2 { to, NAME"_scrollbar_trough_img"; relative, 1.0 1.0; offset,   7 14; } 
+#define VPANEL(NAME, BIMG, BIMG2, BW, BH, NIMG, NIMG2, NW, NH, REL1_TO, \
+       REL1_REL, REL1_OFF, REL2_TO, REL2_REL, REL2_OFF, CLIPTO) \
+      part {                           \
+        name, NAME"_rect";             \
+       clip_to, CLIPTO;                \
+       type, RECT;                     \
+       mouse_events, 0;                \
+       description {                   \
+         state, "default" 0.0;         \
+         color, 255 0 0 0;             \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+       }                               \
+      }                                        \
+      part {                           \
+        name, NAME"_list_border";      \
+       clip_to, CLIPTO;                \
+       type, IMAGE;                    \
+       repeat_events, 1;               \
+       description {                   \
+         state, "default" 0.0;         \
+         rel1 {                        \
+           to, NAME"_rect";            \
+           relative, 0.0 0.0;          \
+           offset, 3 9;                \
+         }                             \
+         rel2 {                        \
+           to, NAME"_rect";            \
+           relative, 1.0 1.0;          \
+           offset, -3 -10;             \
+         }                             \
+         image {                       \
+             normal, "lcd_window.png"; \
+             border, 9 9 14 10;                \
+         }                             \
+       }                               \
+      }                                        \
+      part {                           \
+        name, NAME"_scrollbar_trough_img";     \
+       clip_to, CLIPTO;                \
+       type, IMAGE;                    \
+       mouse_events, 0;                \
+       description {                   \
+         state, "default" 0.0;         \
+         color, 255 255 255 255;       \
+         rel1 {                        \
+           to, NAME"_rect";            \
+           relative, 1.0 0.0;          \
+           offset, -25 45;             \
+         }                             \
+         rel2 {                        \
+           to, NAME"_rect";            \
+           relative, 1.0 1.0;          \
+           offset, -14 -45;            \
+         }                             \
+         image {                       \
+             normal, "v_scrollbar_base.png"; \
+             border, 6 6 20 20;                \
+         }                             \
+       }                               \
+      }                                        \
+      part {                           \
+        name, NAME"_scrollbar_trough"; \
+       clip_to, CLIPTO;                \
+       type, RECT;                     \
+       mouse_events, 1;                \
+       description {                   \
+         state, "default" 0.0;         \
+         color, 192 192 192 0;         \
+         rel1 {                        \
+           to, NAME"_scrollbar_trough_img"; \
+           relative, 0.0 0.0;          \
+           offset, 0 0;                \
+         }                             \
+         rel2 {                        \
+           to, NAME"_scrollbar_trough_img";            \
+           relative, 1.0 1.0;          \
+           offset, 0 0;                \
+         }                             \
+       }                               \
+      }                                        \
+      part {                           \
+        name, NAME"_scrollbar";                \
+       clip_to, CLIPTO;                \
+       type, IMAGE;                    \
+       mouse_events, 1;                \
+       dragable {                      \
+           x, 0 0 0;                   \
+           y, 1 1 0;                   \
+           confine, NAME"_scrollbar_trough"; \
+       }                               \
+       description {                   \
+         state, "default" 0.0;         \
+         min, 11 35;           \
+         align, 0.5 0.5;       \
+         rel1 {                        \
+           relative, 0.5 0.0;          \
+           offset, 0 0;                \
+           to, NAME"_scrollbar_trough";\
+         }                             \
+         rel2 {                        \
+           relative, 0.5 0.0;          \
+           offset, 0 35;               \
+           to, NAME"_scrollbar_trough";\
+         }                             \
+         image {                       \
+             normal, "v_scrollbar.png"; \
+         }                             \
+       }                               \
+       description {                   \
+         state, "down" 0.0;            \
+         min, 11 35;                   \
+         rel1 {                        \
+           relative, 0.5 0.0;          \
+           offset, 0 0;                \
+           to, NAME"_scrollbar_trough";\
+         }                             \
+         rel2 {                        \
+           relative, 0.5 0.0;          \
+           offset, 0 35;               \
+           to, NAME"_scrollbar_trough";\
+         }                             \
+         image {                       \
+             normal, "v_scrollbar.png"; \
+         }                             \
+         color, 255 255 255 127;       \
+       }                               \
+      }                                        \
+      part {                           \
+        name, NAME"_back";             \
+       clip_to, CLIPTO;                \
+       description {                   \
+         state, "default" 0.0;         \
+         min, BW BH;                   \
+         max, BW BH;                   \
+         color, 255 255 255 127;       \
+         V_PREV_REL(NAME)              \
+         image {                       \
+           normal, BIMG;               \
+         }                             \
+       }                               \
+       description {                   \
+         state, "over" 0.0;            \
+         min, BW BH;                   \
+         max, BW BH;                   \
+         color, 255 255 255 255;       \
+         V_PREV_REL(NAME)              \
+         image {                       \
+           normal, BIMG;               \
+         }                             \
+       }                               \
+       description {                   \
+         state, "down" 0.0;            \
+         min, BW BH;                   \
+         max, BW BH;                   \
+         color, 255 255 255 255;       \
+         V_PREV_REL(NAME)              \
+         image {                       \
+           normal, BIMG2;              \
+         }                             \
+       }                               \
+      }                                        \
+      part {                           \
+        name, NAME"_next";             \
+       clip_to, CLIPTO;                \
+       description {                   \
+         state, "default" 0.0;         \
+         min, NW NH;                   \
+         max, NW NH;                   \
+         color, 255 255 255 127;       \
+         V_NEXT_REL(NAME)              \
+         image {                       \
+           normal, NIMG;               \
+         }                             \
+       }                               \
+       description {                   \
+         state, "over" 0.0;            \
+         min, NW NH;                   \
+         max, NW NH;                   \
+         color, 255 255 255 255;       \
+         V_NEXT_REL(NAME)              \
+         image {                       \
+           normal, NIMG;               \
+         }                             \
+       }                               \
+       description {                   \
+         state, "down" 0.0;            \
+         min, NW NH;                   \
+         max, NW NH;                   \
+         color, 255 255 255 255;       \
+         V_NEXT_REL(NAME)              \
+         image {                       \
+           normal, NIMG2;              \
+         }                             \
+       }                               \
+      }                                        \
+      part {                           \
+        name, NAME"_list";             \
+       clip_to, NAME"_list_clip";      \
+       type, RECT;                     \
+       mouse_events, 0;                \
+       description {                   \
+         state, "default" 0.0;         \
+         color, 255 0 0 0;             \
+         rel1 {                        \
+           to, NAME"_rect";            \
+           relative, 0.0 0.0;          \
+           offset, 15 30;              \
+         }                             \
+         rel2 {                        \
+           to, NAME"_rect";            \
+           relative, 1.0 1.0;          \
+           offset, -30 -30;            \
+         }                             \
+       }                               \
+      }                                        \
+      part {                           \
+        name, NAME"_list_clip";                \
+       clip_to, CLIPTO;                \
+       type, RECT;                     \
+       description {                   \
+         state, "default" 0.0;         \
+         color, 255 255 255 255;       \
+         rel1 {                        \
+           to, NAME"_rect";            \
+           relative, 0.0 0.0;          \
+           offset, 5 10;               \
+         }                             \
+         rel2 {                        \
+           to, NAME"_rect";            \
+           relative, 1.0 1.0;          \
+           offset, -15 -10;            \
+         }                             \
+       }                               \
+      }                                        \
+      part {                           \
+        name, NAME"_wheel_rect";       \
+       clip_to, CLIPTO;                \
+       type, RECT;                     \
+       mouse_events, 1;                \
+       repeat_events, 1;               \
+       description {                   \
+         state, "default" 0.0;         \
+         color, 255 0 0 0;             \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+       }                               \
+      }                                        
+
+#define STEP_TIME 0.31
+#define SCROLL_TIME 0.3
+
+#define VPANEL_PROG(NAME, SIGBACK, SIGNEXT, SIGDRAG) \
+      program {                                \
+        name, NAME"_back-in";          \
+        signal, "mouse,in";            \
+        source, NAME"_back";           \
+        action, STATE_SET "over" 0.0;  \
+        transition, DECELERATE 0.5;    \
+        target, NAME"_back";           \
+      }                                        \
+      program {                                \
+        name, NAME"_back-out";         \
+        signal, "mouse,out";           \
+        source, NAME"_back";           \
+        action, STATE_SET "default" 0.0;\
+        transition, DECELERATE 0.5;    \
+        target, NAME"_back";           \
+      }                                        \
+      program {                                \
+       name, NAME"_back-down-1";       \
+       signal, "mouse,clicked,1";      \
+       source, NAME"_back";            \
+       action, DRAG_VAL_STEP -0.1 -0.1;\
+       target, NAME"_scrollbar";       \
+      }                                        \
+      program {                                \
+       name, NAME"_back-down-2";       \
+       signal, "mouse,clicked,1";              \
+       source, NAME"_back";            \
+       action, SIGNAL_EMIT SIGDRAG NAME"_scrollbar"; \
+      }                                        \
+      program {                                \
+        name, NAME"_next-in";          \
+        signal, "mouse,in";            \
+        source, NAME"_next";           \
+        action, STATE_SET "over" 0.0;  \
+        transition, DECELERATE 0.5;    \
+        target, NAME"_next";           \
+      }                                        \
+      program {                                \
+        name, NAME"_next-out";         \
+        signal, "mouse,out";           \
+        source, NAME"_next";           \
+        action, STATE_SET "default" 0.0;\
+        transition, DECELERATE 0.5;    \
+        target, NAME"_next";           \
+      }                                        \
+      program {                                \
+       name, NAME"_next-down-1";       \
+       signal, "mouse,clicked,1";              \
+       source, NAME"_next";            \
+       action, DRAG_VAL_STEP 0.0 0.1;  \
+       target, NAME"_scrollbar";       \
+      }                                        \
+      program {                                \
+       name, NAME"_next-down-2";       \
+       signal, "mouse,clicked,1";              \
+       source, NAME"_next";            \
+       action, SIGNAL_EMIT SIGDRAG NAME"_scrollbar"; \
+      }                                        \
+      program {                                \
+       name, NAME"_scrollbar_move";    \
+       signal, "drag";                 \
+       source, NAME"_scrollbar";       \
+       action, SIGNAL_EMIT SIGDRAG NAME"_scrollbar";   \
+      }                                        \
+      program {                                \
+       name, NAME"_scrollbar_mouse_up";\
+       signal, "mouse,up,1";           \
+       source, NAME"_scrollbar";       \
+       action, STATE_SET "default" 0.0;\
+       transition, DECELERATE 0.25;    \
+       target, NAME"_scrollbar";       \
+      }                                        \
+      program {                                \
+       name, NAME"_scrollbar_mouse_down";      \
+       signal, "mouse,down,1";         \
+       source, NAME"_scrollbar";       \
+       action, STATE_SET "down" 0.0;   \
+       transition, ACCELERATE 0.25;    \
+       target, NAME"_scrollbar";       \
+      }                                        \
+      program {                                \
+       name, NAME"_scrollbar_show";    \
+       signal, "show";                 \
+       source, "";                     \
+       action, DRAG_VAL_SET 0.0 0.0;   \
+       target, NAME"_scrollbar";       \
+      }                                        \
+      program {                                \
+       name, NAME"_scrollbar_mouse_wheel_up";  \
+       signal, "mouse,wheel,0,-1";             \
+       source, NAME"_wheel_rect";      \
+       action, DRAG_VAL_STEP -0.1 -0.1;\
+       target, NAME"_scrollbar";       \
+      }                                        \
+      program {                                \
+       name, NAME"_scrollbar_mouse_wheel_down";        \
+       signal, "mouse,wheel,0,1";              \
+       source, NAME"_wheel_rect";      \
+       action, DRAG_VAL_STEP 0.1 0.1;\
+       target, NAME"_scrollbar";       \
+      }                                        \
+      program {                                \
+       name, NAME"_scrollbar_mouse_wheel";     \
+       signal, "mouse,wheel,*";                        \
+       source, NAME"_wheel_rect";      \
+       action, SIGNAL_EMIT SIGDRAG NAME"_scrollbar";   \
+      }                                        
+/*
+      program {                                \
+       name, NAME"_back-down_timer";   \
+       signal, "mouse,down,1";         \
+       source, NAME"_back";            \
+       action, SIGNAL_EMIT SIGBACK",start" NAME"_back";        \
+       in, SCROLL_TIME 0.0;                    \
+      }                                        \
+      program {                                \
+       name, NAME"_next-down_timer";   \
+       signal, "mouse,down,1";         \
+       source, NAME"_next";            \
+       action, SIGNAL_EMIT SIGNEXT",start" NAME"_next";        \
+       in, SCROLL_TIME 0.0;            \
+      }                                        \
+      program {                                \
+       name, NAME"_back-up_timer";     \
+       signal, "mouse,up,1";           \
+       source, NAME"_back";            \
+       action, SIGNAL_EMIT SIGBACK",stop" NAME"_back"; \
+      }                                        \
+      program {                                \
+       name, NAME"_next-up_timer";     \
+       signal, "mouse,up,1";           \
+       source, NAME"_next";            \
+       action, SIGNAL_EMIT SIGNEXT",stop" NAME"_next"; \
+      }                                        \
+*/
diff --git a/data/themes/iio/programs/controls_to.edc b/data/themes/iio/programs/controls_to.edc
new file mode 100644 (file)
index 0000000..6c83f25
--- /dev/null
@@ -0,0 +1,266 @@
+program { 
+       name, "titlebar_click"; signal, "mouse,clicked,*"; source, BASE; 
+       action, SIGNAL_EMIT "RAISE" BASE; }
+program {
+       name, "rslider_bar_click"; signal, "mouse,clicked,*"; source, "CenterClipArea"; 
+       action, SIGNAL_EMIT "RAISE" "CenterClipArea"; }
+
+#define PB "PLAYBACK_STATE_"
+///////////////////////////////////////////////////////////////////////
+// slides
+/*
+program { name, "hide_Lpanel"; signal, "mouse,clicked,*"; source, LEFT"border";
+       action, STATE_SET "slide" 0.0; transition, DECELERATE, 0.5; 
+       target, LEFT"border"; target, LEFT"border-slide"; target, LEFT"lcd";
+       target, "trans_Rect";
+}
+
+program { name, "show_Lpanel"; signal, "mouse,clicked,*"; source, LEFT"border-slide";
+       action, STATE_SET "default" 0.0; transition, DECELERATE, 0.5;
+       target, LEFT"border"; target, LEFT"border-slide"; target, LEFT"lcd";
+       target, "trans_Rect";
+}
+
+program { name, "hide_Rpanel"; signal, "mouse,clicked,*"; source, RIGHT"border";
+       action, STATE_SET "slide" 0.0; transition, DECELERATE, 0.5; 
+       target, RIGHT"border"; target, RIGHT"border-slide"; target, RIGHT"lcd";
+}
+
+program { name, "show_Rpanel"; signal, "mouse,clicked,*"; source, RIGHT"border-slide";
+       action, STATE_SET "default" 0.0; transition, DECELERATE, 0.5;
+       target, RIGHT"border"; target, RIGHT"border-slide"; target, RIGHT"lcd";
+}
+*/
+///////////////////////////////////////////////////////////////////////
+// playback signals
+// no longer in use
+
+//program { name, "pb_started";  signal, PB"PLAYING"; source, "*";
+//     action, SIGNAL_EMIT "PLAY" "play_button"; 
+//}
+//
+//program { 
+//     name, "pb_paused"; signal, PB"PAUSED"; source, "*";
+//     action, SIGNAL_EMIT "PAUSE" "pause_button"; 
+//} 
+//
+//program { 
+//     name, "pb_stopped"; signal, PB"STOPPED"; source, "*";
+//     action, SIGNAL_EMIT "STOP" "stop_button"; 
+//}
+
+///////////////////////////////////////////////////////////////////////
+// seeker program
+
+program { name, "seeker-start"; signal, "mouse,down,1"; source, "seeker_grabber";
+       action, SIGNAL_EMIT "SEEKER_START" ""; 
+}
+     
+program { name, "seeker-update"; signal, "mouse,move"; source, "seeker_grabber";
+       action, SIGNAL_EMIT "SEEKER_UPDATE" ""; 
+}
+      
+program { name, "seeker-stop"; signal, "mouse,up,1"; source, "seeker_grabber";
+       action, SIGNAL_EMIT "SEEKER_STOP" ""; 
+}
+///////////////////////////////////////////////////////////////////////
+// switch
+/*
+program { name, "switch_hi"; signal, "mouse,in"; source, "switch_stance";
+       action, STATE_SET "hilited" 0.0; transition, LINEAR 0.1; target, "switch_stance";
+}
+program { name, "switch_unhilited"; signal, "mouse,out";  source, "switch_stance";
+       action, STATE_SET "default" 0.0; transition, LINEAR 0.1; target, "switch_stance";
+}
+program { name, "switch_clicked"; signal, "mouse,down,*"; source, "switch_stance";
+       action, STATE_SET "clicked" 0.0; transition, LINEAR 1.0; target, "switch_stance";
+}
+program { name, "switch_unclicked"; signal, "mouse,up,*"; source, "switch_stance";
+       action, STATE_SET "clicked" 0.0; transition, LINEAR 1.0; target, "switch_stance";
+}
+program { name, "switch_exec"; signal,  "mouse,down,*"; source, "switch_stance";
+       action, SIGNAL_EMIT "SWITCH_GROUP" "alternate"; }
+*/
+///////////////////////////////////////////////////////////////////////
+
+#define PLAY "play_button"
+
+program { name, "play_hilited"; signal, "mouse,in"; source, PLAY;
+       action, STATE_SET "hilited" 0.0; transition, LINEAR 0.1; target, PLAY;
+       /*after, "play_unhilited";*/ in, 0.15 0.0;
+}
+program { name, "play_unhilited"; signal, "mouse,out"; source, PLAY;
+       action, ACTION_STOP; target, "play_hilited";
+       after, "play_unhilited_real";
+}      
+program { name, "play_unhilited_real";
+       action, STATE_SET "default" 0.0; transition, LINEAR 0.1; target, PLAY;
+}      
+program { name, "play_click"; signal, "mouse,down,*";source, PLAY;
+       action, STATE_SET "clicked" 0.0; transition, LINEAR 0.1; target, PLAY;
+       after, "play_unclick"; in, 0.15 0.0;
+}      
+program { name, "play_unclick"; signal, "mouse,up,*"; source, PLAY;
+       action, STATE_SET "default" 0.0; transition, LINEAR 0.1; target, PLAY;
+}
+program { name, "play_click_emission"; signal, "mouse,down,*"; source, PLAY;
+       action, SIGNAL_EMIT "playback.play" PLAY; }
+
+#define PREV "prev_button"
+
+program { name, "prev_button_hilited"; signal, "mouse,in"; source, PREV;
+       action, STATE_SET "hilited" 0.0; transition, LINEAR 0.1; target, PREV;
+       /*after, "prev_button_unhilited";*/ in, 0.15 0.0;
+}
+program { name, "prev_button_unhilited"; signal, "mouse,out"; source, PREV;
+       action, ACTION_STOP; target, "prev_button_hilited";
+       after, "prev_button_unhilited_real";
+}
+program { name, "prev_button_unhilited_real";
+       action, STATE_SET "default" 0.0; transition, LINEAR 0.1; target, PREV;
+}
+program { name, "prev_clicked"; signal, "mouse,down,*"; source, PREV;
+       action, STATE_SET "clicked" 0.0; transition, LINEAR 0.1; target, PREV;
+       after, "prev_unclicked"; in, 0.15 0.0;
+}
+program { name, "prev_unclicked"; signal, "mouse,up,*"; source, PREV;
+       action, STATE_SET "default" 0.0; transition, LINEAR 0.1; target, PREV;
+}
+program { name, "previous_click"; signal, "mouse,down,*"; source, PREV;
+       action, SIGNAL_EMIT "playback.prev" PREV; }
+
+#define NEXT "next_button"
+
+program { name, "next_hilited"; signal, "mouse,in"; source, NEXT;
+       action, STATE_SET "hilited" 0.0; transition, LINEAR 0.1; target, NEXT;
+       /*after, "next_unhilited";*/ in, 0.15 0.0;
+}
+program { name, "next_unhilited"; signal, "mouse,out"; source, NEXT;
+       action, ACTION_STOP; target, "next_hilited";
+       after, "next_unhilited_real";
+}
+program { name, "next_unhilited_real";
+       action, STATE_SET "default" 0.0; transition, LINEAR 0.1; target, NEXT;
+}
+program { name, "next_click"; signal, "mouse,down,*"; source, NEXT;
+       action, STATE_SET "clicked" 0.0; transition, LINEAR 0.1; target, NEXT;
+       after, "next_unclick"; in, 0.15 0.0;
+}
+program { name, "next_unclick"; signal, "mouse,up,*"; source, NEXT;
+       action, STATE_SET "default" 0.0; transition, LINEAR 0.1; target, NEXT;
+}
+program { name, "next_click_emission"; signal, "mouse,down,*"; source, NEXT;
+       action, SIGNAL_EMIT "playback.next" NEXT; }
+
+#define PAUSE "pause_button"
+
+program { name, "pause_hilited"; signal, "mouse,in"; source, PAUSE;
+       action, STATE_SET "hilited" 0.0; transition, LINEAR 0.1; target, PAUSE;
+       /*after, "pause_unhilited";*/ in, 0.15 0.0;
+}
+program { name, "pause_unhilited"; signal, "mouse,out"; source, PAUSE;
+       action, ACTION_STOP; target, "pause_hilited";
+       after, "pause_unhilited_real";
+}
+program { name, "pause_unhilited_real";
+       action, STATE_SET "default" 0.0; transition, LINEAR 0.1; target, PAUSE;
+}
+program { name, "pause_click"; signal, "mouse,down,*"; source, PAUSE;
+       action, STATE_SET "clicked" 0.0; transition, LINEAR 0.1; target, PAUSE;
+}
+program { name, "pause_unclick"; signal, "mouse,up,*"; source, PAUSE;
+       action, STATE_SET "default" 0.0; transition, LINEAR 0.1; target, PAUSE;
+}
+program { name, "pause_click_emission"; signal, "mouse,down,*"; source, PAUSE;
+       action, SIGNAL_EMIT "PAUSE" PAUSE; }
+
+#define STOP "stop_button"
+
+program { name, "stop_hilited"; signal, "mouse,in"; source, STOP;
+       action, STATE_SET "hilited" 0.0; transition, LINEAR 0.1; target, STOP;
+       /*after, "stop_unhilited";*/ in, 0.15 0.0;
+} 
+program { name, "stop_unhilited"; signal, "mouse,out"; source, STOP;
+       action, ACTION_STOP; target, "stop_hilited";
+       after, "stop_unhilited_real";
+}      
+program { name, "stop_unhilited_real";
+       action, STATE_SET "default" 0.0; transition, LINEAR 0.1; target, STOP;
+}
+program { name, "stop_click"; signal, "mouse,down,*"; source, STOP;
+       action, STATE_SET "clicked" 0.0; transition, LINEAR 0.1; target, STOP;
+       after, "stop_unclick"; in, 0.15 0.0;
+}
+program { name, "stop_unclick"; signal, "mouse,up,*"; source, STOP;
+       action, STATE_SET "default" 0.0; transition, LINEAR 0.1; target, STOP;
+}
+program { name, "stop_click_emission"; signal, "mouse,down,*"; source, STOP;
+       action, SIGNAL_EMIT "STOP" STOP; }
+///////////////////////////////////////////////////////////////////////
+
+#define ADD "add_button"
+#define DELETE "delete_button"
+#define EDIT "edit_button"
+
+program { name, "addFile_hilited"; signal, "mouse,in"; source, ADD;
+       action, STATE_SET "hilited" 0.0; transition, LINEAR 0.1; target, ADD;
+}
+program { name, "addFile_unhilited"; signal, "mouse,out";  source, ADD;
+       action, STATE_SET "default" 0.0; transition, LINEAR 0.1; target, ADD;
+}
+program { name, "addFile_clicked"; signal, "mouse,down,1"; source, ADD;
+       action, STATE_SET "clicked" 0.0; transition, LINEAR 0.1; target, ADD;
+}
+program { name, "addFile_unclicked"; signal, "mouse,down"; source, ADD;
+       action, STATE_SET "clicked" 0.0; transition, LINEAR 0.1; target, ADD;
+}
+program { name, "AddFile"; signal,  "mouse,up,1"; source, ADD;
+       action, SIGNAL_EMIT "file_dialog.open" ADD; }
+//
+program { name, "deleteFile_hilited"; signal, "mouse,in"; source, DELETE;
+       action, STATE_SET "hilited" 0.0; transition, LINEAR 0.1; target, DELETE;
+}
+program { name, "deleteFile_unhilited"; signal, "mouse,out";  source, DELETE;
+       action, STATE_SET "default" 0.0; transition, LINEAR 0.1; target, DELETE;
+}
+program { name, "deleteFile_clicked"; signal, "mouse,down,1"; source, DELETE;
+       action, STATE_SET "clicked" 0.0; transition, LINEAR 0.1; target, DELETE;
+}
+program { name, "deleteFile_unclicked"; signal, "mouse,down"; source, DELETE;
+       action, STATE_SET "clicked" 0.0; transition, LINEAR 0.1; target, DELETE;
+}
+program { name, "deleteFile"; signal,  "mouse,up,1"; source, DELETE;
+       action, SIGNAL_EMIT "PLAYLIST_DEL" "*"; }
+//
+program { name, "editFile_hilited"; signal, "mouse,in"; source, EDIT;
+       action, STATE_SET "hilited" 0.0; transition, LINEAR 0.1; target, EDIT;
+}
+program { name, "editFile_unhilited"; signal, "mouse,out";  source, EDIT;
+       action, STATE_SET "default" 0.0; transition, LINEAR 0.1; target, EDIT;
+}
+program { name, "editFile_clicked"; signal, "mouse,down,1"; source, EDIT;
+       action, STATE_SET "clicked" 0.0; transition, LINEAR 0.1; target, EDIT;
+}
+program { name, "editFile_unclicked"; signal, "mouse,down"; source, EDIT;
+       action, STATE_SET "clicked" 0.0; transition, LINEAR 0.1; target, EDIT;
+}
+program { name, "editFile"; signal,  "mouse,up,1"; source, EDIT;
+       action, SIGNAL_EMIT "PLAYLIST_EDIT" EDIT; }
+
+///////////////////////////////////////////////////////////////////////
+// program: quit
+
+program { name, "quit_hilited"; signal, "mouse,in"; source, "quit";
+       action, STATE_SET "hilited" 0.0; transition, LINEAR 0.1; target, "quit";
+}
+program { name, "quit_unhilited"; signal, "mouse,out";  source, "quit";
+       action, STATE_SET "default" 0.0; transition, LINEAR 0.1; target, "quit";
+}
+program { name, "quit_clicked"; signal, "mouse,down,*"; source, "quit";
+       action, STATE_SET "clicked" 0.0; transition, LINEAR 1.0; target, "quit";
+}
+program { name, "quit_unclicked"; signal, "mouse,up,*"; source, "quit";
+       action, STATE_SET "clicked" 0.0; transition, LINEAR 1.0; target, "quit";
+}
+program { name, "quit_exit"; signal,  "mouse,down,*"; source, "quit";
+       action, SIGNAL_EMIT "close" "quit"; }
diff --git a/data/themes/iio/programs/esmart_fd.edc b/data/themes/iio/programs/esmart_fd.edc
new file mode 100644 (file)
index 0000000..07055c4
--- /dev/null
@@ -0,0 +1,15 @@
+VPANEL_PROG("directory",
+       "e,fd,container,scroll,back,directory",
+       "e,fd,container,scroll,next,directory",
+       "e,fd,container,scrollbar,scroll,,directory")
+VPANEL_PROG("files",
+       "e,fd,container,scroll,back,files",
+       "e,fd,container,scroll,next,files",
+       "e,fd,container,scrollbar,scroll,,files")
+program {
+    name, "file_dialog_align_show";
+    signal, "show";
+    source, "";
+    action, DRAG_VAL_SET 0.5 0.5;
+    target, "base.dragable";
+}
diff --git a/data/themes/iio/programs/playlist.edc b/data/themes/iio/programs/playlist.edc
new file mode 100644 (file)
index 0000000..a5d7957
--- /dev/null
@@ -0,0 +1,21 @@
+
+program { name, "selected_mouse"; signal, "mouse,clicked,1"; source, "*";
+       action, SIGNAL_EMIT "PLAYLIST_ITEM_SELECTED" ""; }
+
+program { name, "selected"; signal, "PLAYLIST_ITEM_SELECTED"; source, "";
+       action, STATE_SET "selected" 0.0; transition, LINEAR 0.2; 
+       target, "title"; target, "duration"; target, "background"; }
+
+program { name, "unselected"; signal, "PLAYLIST_ITEM_UNSELECTED"; source, "";
+       action, STATE_SET "default" 0.0; transition, LINEAR 0.2; 
+       target, "title"; target, "duration"; target, "background"; }
+
+program { name, "dbl_clicked"; signal, "mouse,down,1,double"; source, "*";
+       action, SIGNAL_EMIT "PLAYLIST_ITEM_PLAY" ""; }
+
+program { name, "scroll_up"; signal, "mouse,wheel,0,-1"; source, "*";
+       action, SIGNAL_EMIT "PLAYLIST_SCROLL_UP" ""; }
+
+program { name, "scroll_down"; signal, "mouse,wheel,0,1"; source, "*";
+       action, SIGNAL_EMIT "PLAYLIST_SCROLL_DOWN" ""; }
+
diff --git a/data/themes/iio/programs/switch.edc b/data/themes/iio/programs/switch.edc
new file mode 100644 (file)
index 0000000..5dc48bb
--- /dev/null
@@ -0,0 +1,142 @@
+
+// switch_mode
+program { name, "switch_mode_hilited"; signal, "mouse,in"; source, "sw_base";
+       action, STATE_SET "hilited" 0.0; transition, LINEAR, 0.1; target, "sw_base"; }
+
+program { name, "switch_mode_un_unhilited"; signal, "mouse,out"; source, "sw_base";
+       action, STATE_SET "default" 0.0; transition, LINEAR, 0.1; target, "sw_base"; }
+
+program { name, "switch_mode_clicked"; signal, "mouse,down,1"; source, "sw_base";
+       action, STATE_SET "clicked" 0.0; transition, LINEAR, 1.0; target, "sw_base"; }
+
+program { name, "switch_mode_unclicked"; signal, "mouse,down"; source, "sw_base";
+       action, STATE_SET "clicked" 0.0; transition, LINEAR, 1.0; target, "sw_base"; }
+
+program { name, "switch_mode_2"; signal, "mouse,down,1"; source, "sw_base";
+       action, SIGNAL_EMIT "SWITCH_GROUP", "euphoria"; }
+//
+program { name, "_titlebar_click"; signal, "mouse,clicked,1"; source, "small_base";
+       action, SIGNAL_EMIT "RAISE", "small_base"; }
+// 
+program { name, "_play_hilited"; signal, "mouse,in"; source, "_play_button";
+       action, STATE_SET "hilited" 0.0; transition, LINEAR, 0.1; target, "_play_button"; 
+}
+program { name, "_play_unhilited"; signal, "mouse,out"; source, "_play_button";
+       action, STATE_SET "default" 0.0; transition, LINEAR, 1.0; target, "_play_button";
+}      
+program { name, "_play_click"; signal, "mouse,down,1"; source, "_play_button";
+       action, STATE_SET "clicked" 0.0; transition, LINEAR, 0.1; target, "_play_button";
+}      
+program { name, "_play_unclick"; signal, "mouse,down"; source, "_play_button";
+       action, STATE_SET "default" 0.0; transition, LINEAR, 0.1; target, "_play_button";
+}
+program { name, "_play_click"; signal, "mouse,down,1"; source, "_play_button";
+       action, SIGNAL_EMIT "playback.play" "play_button"; 
+}
+
+//
+program { name, "_prev_button_hilited"; signal, "mouse,in"; source, "_prev_button";
+       action, STATE_SET "hilited" 0.0; transition, LINEAR, 0.1; target, "_prev_button";
+}
+program { name, "_prev_button_unhilited"; signal, "mouse,out"; source, "_prev_button";
+       action, STATE_SET "default" 0.0; transition, LINEAR, 1.0; target, "_prev_button";
+}
+program { name, "_prev_clicked"; signal, "mouse,down,1"; source, "_prev_button";
+       action, STATE_SET "clicked" 0.0; transition, LINEAR, 0.1; target, "_prev_button";
+}
+program { name, "_prev_unclicked"; signal, "mouse,down"; source, "_prev_button";
+       action, STATE_SET "default" 0.0; transition, LINEAR, 0.1; target, "_prev_button";
+}
+program { name, "_previous_click"; signal, "mouse,down,1"; source, "_prev_button";
+       action, SIGNAL_EMIT "playback.prev" "previous_button";
+}
+       
+//
+program { name, "_next_hilited"; signal, "mouse,in"; source, "_next_button";
+       action, STATE_SET "hilited" 0.0; transition, LINEAR, 0.1; target, "_next_button";
+}
+program { name, "_next_unhilited"; signal, "mouse,out"; source, "_next_button";
+       action, STATE_SET "default" 0.0; transition, LINEAR, 1.0; target, "_next_button";
+}
+program { name, "_next_click"; signal, "mouse,down,1"; source, "_next_button";
+action, STATE_SET "clicked" 0.0; transition, LINEAR, 0.1; target, "_next_button";
+}
+program { name, "_next_unclick"; signal, "mouse,down"; source, "_next_button";
+       action, STATE_SET "default" 0.0; transition, LINEAR, 0.1; target, "_next_button";
+}
+program { name, "_next_click"; signal, "mouse,down,1"; source, "_next_button";
+       action, SIGNAL_EMIT "playback.next" "next_button";
+}
+
+//
+program { name, "_pause_hilited"; signal, "mouse,in"; source, "_pause_button";
+       action, STATE_SET "hilited" 0.0; transition, LINEAR, 0.1; target, "_pause_button";
+}
+program { name, "_pause_unhilited"; signal, "mouse,out"; source, "_pause_button";
+       action, STATE_SET "default" 0.0; transition, LINEAR, 1.0; target, "_pause_button";
+}
+program { name, "_pause_click"; signal, "mouse,down,1"; source, "_pause_button";
+       action, STATE_SET "clicked" 0.0; transition, LINEAR, 0.1; target, "_pause_button";
+}
+program { name, "_pause_unclick"; signal, "mouse,down"; source, "_pause_button";
+       action, STATE_SET "default" 0.0; transition, LINEAR, 0.1; target, "_pause_button";
+}
+program { name, "_pause_click"; signal, "mouse,down,1"; source, "_pause_button";
+       action, SIGNAL_EMIT "PAUSE" "pause_button";
+}
+
+//
+program { name, "_stop_hilited"; signal, "mouse,in"; source, "_stop_button";
+       action, STATE_SET "hilited" 0.0; transition, LINEAR, 0.1; target, "_stop_button";
+} 
+program { name, "_stop_unhilited"; signal, "mouse,out"; source, "_stop_button";
+       action, STATE_SET "default" 0.0; transition, LINEAR, 1.0; target, "_stop_button";
+}      
+program { name, "_stop_click"; signal, "mouse,down,1"; source, "_stop_button";
+       action, STATE_SET "clicked" 0.0; transition, LINEAR, 0.1; target, "_stop_button";
+}
+program { name, "_stop_unclick"; signal, "mouse,down"; source, "_stop_button";
+       action, STATE_SET "default" 0.0; transition, LINEAR, 0.1; target, "_stop_button";
+}
+program { name, "_stop_click"; signal, "mouse,down,1"; source, "_stop_button";
+       action, SIGNAL_EMIT "STOP" "stop_button";
+}
+
+program { name, "playback_has_begun"; signal, "PLAYBACK_STATE_PLAYING"; source, "*";
+       action, STATE_SET "active" 0.0; transition, DECELERATE 0.1; 
+       target, "small_lcd"; 
+       target, "strans_Rect";
+       after, "playback_has_begun"; }
+//
+program { name, "playback_is_paused"; signal, "PLAYBACK_STATE_PAUSED"; source, "*";
+       action, STATE_SET "default" 0.0; transition, DECELERATE 0.1; 
+       target, "small_lcd";
+       target, "strans_Rect";
+       after, "playback_blink"; }
+//
+program { name, "playback_blink"; signal, "PLAYBACK_STATE_PAUSED"; source, "*";
+       action, STATE_SET "active" 0.0; transition, LINEAR 0.5; 
+       target, "small_lcd"; 
+       target, "strans_Rect";
+       after, "playback_is_paused"; }
+//
+program { name, "playback_has_stopped"; signal, "PLAYBACK_STATE_STOPPED"; source, "*";
+       action, STATE_SET "default" 0.0; transition, DECELERATE 0.5; 
+       target, "small_lcd";
+       target, "strans_Rect"; }
+//
+program { name, "_quit_hilited"; signal, "mouse,in"; source, "_quit";
+       action, STATE_SET "hilited" 0.0; transition, LINEAR, 0.1; target, "_quit"; 
+}
+program { name, "_quit_unhilited"; signal, "mouse,out"; source, "_quit"; 
+       action, STATE_SET "default" 0.0; transition, LINEAR, 0.1; target, "_quit";
+}
+program { name, "_quit_clicked"; signal, "mouse,down,1"; source, "_quit";
+       action, STATE_SET "clicked" 0.0; transition, LINEAR, 1.0; target, "_quit";
+}
+program { name, "_quit_unclicked"; signal, "mouse,down"; source, "_quit";
+       action, STATE_SET "clicked" 0.0; transition, LINEAR, 1.0; target, "_quit";
+}
+program { name, "_quit_exit"; signal, "mouse,down,1"; source, "_quit";
+       action, SIGNAL_EMIT "close" "quit";
+}
diff --git a/data/themes/streamline/images/background-dark-green.png b/data/themes/streamline/images/background-dark-green.png
new file mode 100644 (file)
index 0000000..e338859
Binary files /dev/null and b/data/themes/streamline/images/background-dark-green.png differ
diff --git a/data/themes/streamline/images/background-green.png b/data/themes/streamline/images/background-green.png
new file mode 100644 (file)
index 0000000..2c44f99
Binary files /dev/null and b/data/themes/streamline/images/background-green.png differ
diff --git a/data/themes/streamline/images/border-scale.png b/data/themes/streamline/images/border-scale.png
new file mode 100644 (file)
index 0000000..ad7a073
Binary files /dev/null and b/data/themes/streamline/images/border-scale.png differ
diff --git a/data/themes/streamline/images/button-3stage-fulldown.png b/data/themes/streamline/images/button-3stage-fulldown.png
new file mode 100644 (file)
index 0000000..56f1464
Binary files /dev/null and b/data/themes/streamline/images/button-3stage-fulldown.png differ
diff --git a/data/themes/streamline/images/button-3stage-selected.png b/data/themes/streamline/images/button-3stage-selected.png
new file mode 100644 (file)
index 0000000..11ce0ae
Binary files /dev/null and b/data/themes/streamline/images/button-3stage-selected.png differ
diff --git a/data/themes/streamline/images/button-3stage-unselected.png b/data/themes/streamline/images/button-3stage-unselected.png
new file mode 100644 (file)
index 0000000..616f18d
Binary files /dev/null and b/data/themes/streamline/images/button-3stage-unselected.png differ
diff --git a/data/themes/streamline/images/button-full-blinking.png b/data/themes/streamline/images/button-full-blinking.png
new file mode 100644 (file)
index 0000000..01aa251
Binary files /dev/null and b/data/themes/streamline/images/button-full-blinking.png differ
diff --git a/data/themes/streamline/images/button-full-clicked.png b/data/themes/streamline/images/button-full-clicked.png
new file mode 100644 (file)
index 0000000..eeffcf2
Binary files /dev/null and b/data/themes/streamline/images/button-full-clicked.png differ
diff --git a/data/themes/streamline/images/button-full-normal.png b/data/themes/streamline/images/button-full-normal.png
new file mode 100644 (file)
index 0000000..88c4233
Binary files /dev/null and b/data/themes/streamline/images/button-full-normal.png differ
diff --git a/data/themes/streamline/images/button-full-unblinking.png b/data/themes/streamline/images/button-full-unblinking.png
new file mode 100644 (file)
index 0000000..186a2e8
Binary files /dev/null and b/data/themes/streamline/images/button-full-unblinking.png differ
diff --git a/data/themes/streamline/images/button-off.png b/data/themes/streamline/images/button-off.png
new file mode 100644 (file)
index 0000000..15dc4d6
Binary files /dev/null and b/data/themes/streamline/images/button-off.png differ
diff --git a/data/themes/streamline/images/button-on.png b/data/themes/streamline/images/button-on.png
new file mode 100644 (file)
index 0000000..99d1fe7
Binary files /dev/null and b/data/themes/streamline/images/button-on.png differ
diff --git a/data/themes/streamline/images/button-small-clicked.png b/data/themes/streamline/images/button-small-clicked.png
new file mode 100644 (file)
index 0000000..dbcb4b4
Binary files /dev/null and b/data/themes/streamline/images/button-small-clicked.png differ
diff --git a/data/themes/streamline/images/button-small-normal.png b/data/themes/streamline/images/button-small-normal.png
new file mode 100644 (file)
index 0000000..11971c4
Binary files /dev/null and b/data/themes/streamline/images/button-small-normal.png differ
diff --git a/data/themes/streamline/images/close_button.png b/data/themes/streamline/images/close_button.png
new file mode 100644 (file)
index 0000000..a27902a
Binary files /dev/null and b/data/themes/streamline/images/close_button.png differ
diff --git a/data/themes/streamline/images/compact-nexttrack-clicked.png b/data/themes/streamline/images/compact-nexttrack-clicked.png
new file mode 100644 (file)
index 0000000..1b10144
Binary files /dev/null and b/data/themes/streamline/images/compact-nexttrack-clicked.png differ
diff --git a/data/themes/streamline/images/compact-nexttrack-normal.png b/data/themes/streamline/images/compact-nexttrack-normal.png
new file mode 100644 (file)
index 0000000..1208c48
Binary files /dev/null and b/data/themes/streamline/images/compact-nexttrack-normal.png differ
diff --git a/data/themes/streamline/images/compact-prevtrack-clicked.png b/data/themes/streamline/images/compact-prevtrack-clicked.png
new file mode 100644 (file)
index 0000000..19ab0b5
Binary files /dev/null and b/data/themes/streamline/images/compact-prevtrack-clicked.png differ
diff --git a/data/themes/streamline/images/compact-prevtrack-normal.png b/data/themes/streamline/images/compact-prevtrack-normal.png
new file mode 100644 (file)
index 0000000..e39e250
Binary files /dev/null and b/data/themes/streamline/images/compact-prevtrack-normal.png differ
diff --git a/data/themes/streamline/images/compact-seekback-clicked.png b/data/themes/streamline/images/compact-seekback-clicked.png
new file mode 100644 (file)
index 0000000..4ca9373
Binary files /dev/null and b/data/themes/streamline/images/compact-seekback-clicked.png differ
diff --git a/data/themes/streamline/images/compact-seekback-normal.png b/data/themes/streamline/images/compact-seekback-normal.png
new file mode 100644 (file)
index 0000000..c3e7d36
Binary files /dev/null and b/data/themes/streamline/images/compact-seekback-normal.png differ
diff --git a/data/themes/streamline/images/compact-seekforward-clicked.png b/data/themes/streamline/images/compact-seekforward-clicked.png
new file mode 100644 (file)
index 0000000..e810a31
Binary files /dev/null and b/data/themes/streamline/images/compact-seekforward-clicked.png differ
diff --git a/data/themes/streamline/images/compact-seekforward-normal.png b/data/themes/streamline/images/compact-seekforward-normal.png
new file mode 100644 (file)
index 0000000..8d2e439
Binary files /dev/null and b/data/themes/streamline/images/compact-seekforward-normal.png differ
diff --git a/data/themes/streamline/images/controls-back.png b/data/themes/streamline/images/controls-back.png
new file mode 100644 (file)
index 0000000..73bb2fc
Binary files /dev/null and b/data/themes/streamline/images/controls-back.png differ
diff --git a/data/themes/streamline/images/eplayer-interface-2b.png b/data/themes/streamline/images/eplayer-interface-2b.png
new file mode 100644 (file)
index 0000000..522ea58
Binary files /dev/null and b/data/themes/streamline/images/eplayer-interface-2b.png differ
diff --git a/data/themes/streamline/images/lcd_area.png b/data/themes/streamline/images/lcd_area.png
new file mode 100644 (file)
index 0000000..927dc38
Binary files /dev/null and b/data/themes/streamline/images/lcd_area.png differ
diff --git a/data/themes/streamline/images/minimize.png b/data/themes/streamline/images/minimize.png
new file mode 100644 (file)
index 0000000..729203b
Binary files /dev/null and b/data/themes/streamline/images/minimize.png differ
diff --git a/data/themes/streamline/images/playpause-clicked.png b/data/themes/streamline/images/playpause-clicked.png
new file mode 100644 (file)
index 0000000..42ce088
Binary files /dev/null and b/data/themes/streamline/images/playpause-clicked.png differ
diff --git a/data/themes/streamline/images/playpause-down.png b/data/themes/streamline/images/playpause-down.png
new file mode 100644 (file)
index 0000000..d4f5316
Binary files /dev/null and b/data/themes/streamline/images/playpause-down.png differ
diff --git a/data/themes/streamline/images/playpause-normal.png b/data/themes/streamline/images/playpause-normal.png
new file mode 100644 (file)
index 0000000..d665e55
Binary files /dev/null and b/data/themes/streamline/images/playpause-normal.png differ
diff --git a/data/themes/streamline/images/playpause-orange-held.png b/data/themes/streamline/images/playpause-orange-held.png
new file mode 100644 (file)
index 0000000..50fd2c9
Binary files /dev/null and b/data/themes/streamline/images/playpause-orange-held.png differ
diff --git a/data/themes/streamline/images/playpause-orange-released.png b/data/themes/streamline/images/playpause-orange-released.png
new file mode 100644 (file)
index 0000000..0fabe5d
Binary files /dev/null and b/data/themes/streamline/images/playpause-orange-released.png differ
diff --git a/data/themes/streamline/images/set-button-normal.png b/data/themes/streamline/images/set-button-normal.png
new file mode 100644 (file)
index 0000000..482428e
Binary files /dev/null and b/data/themes/streamline/images/set-button-normal.png differ
diff --git a/data/themes/streamline/images/small-text-button.png b/data/themes/streamline/images/small-text-button.png
new file mode 100644 (file)
index 0000000..b45311c
Binary files /dev/null and b/data/themes/streamline/images/small-text-button.png differ
diff --git a/data/themes/streamline/images/vol-display.png b/data/themes/streamline/images/vol-display.png
new file mode 100644 (file)
index 0000000..7d5f3b1
Binary files /dev/null and b/data/themes/streamline/images/vol-display.png differ
diff --git a/data/themes/streamline/images/vol-label.png b/data/themes/streamline/images/vol-label.png
new file mode 100644 (file)
index 0000000..b35ff83
Binary files /dev/null and b/data/themes/streamline/images/vol-label.png differ
diff --git a/data/themes/streamline/images/vol-minus-clicked.png b/data/themes/streamline/images/vol-minus-clicked.png
new file mode 100644 (file)
index 0000000..afc4877
Binary files /dev/null and b/data/themes/streamline/images/vol-minus-clicked.png differ
diff --git a/data/themes/streamline/images/vol-minus.png b/data/themes/streamline/images/vol-minus.png
new file mode 100644 (file)
index 0000000..f6cde18
Binary files /dev/null and b/data/themes/streamline/images/vol-minus.png differ
diff --git a/data/themes/streamline/images/vol-plus-clicked.png b/data/themes/streamline/images/vol-plus-clicked.png
new file mode 100644 (file)
index 0000000..7ef4918
Binary files /dev/null and b/data/themes/streamline/images/vol-plus-clicked.png differ
diff --git a/data/themes/streamline/images/vol-plus.png b/data/themes/streamline/images/vol-plus.png
new file mode 100644 (file)
index 0000000..4937ae9
Binary files /dev/null and b/data/themes/streamline/images/vol-plus.png differ
diff --git a/data/themes/streamline/streamline.edc b/data/themes/streamline/streamline.edc
new file mode 100644 (file)
index 0000000..dc6a05c
--- /dev/null
@@ -0,0 +1,52 @@
+/*** Streamline Euphoria Theme - An Alternation on the default theme ***/
+/***  By: Ben Rockwood                                               ***/
+
+images {
+       #include "streamline_images.edc"
+}
+
+collections {
+        group {
+                min, 300 60;
+                max, 300 60;
+                name, "euphoria_small";
+               
+               parts {
+                       #include "streamline_small_parts.edc"
+               }
+               programs {
+                       #include "streamline_small_progs.edc"
+               }
+                       
+       }
+
+        group {
+                min, 510 90;
+                max, 510 90;
+                name, "euphoria";
+                parts {
+                       #include "streamline_parts.edc"
+               }
+                programs {
+                        #include "streamline_progs.edc"
+                }
+
+        }
+
+        group {
+                name, "playlist_item";
+                min, 200 12;
+                max, 200 12;
+
+                parts {
+                       #include "streamline_playlist_parts.edc"
+                }
+                programs {
+                        #include "streamline_playlist_progs.edc"
+                }
+
+        }
+
+}
+
+
diff --git a/data/themes/streamline/streamline_images.edc b/data/themes/streamline/streamline_images.edc
new file mode 100644 (file)
index 0000000..d074b67
--- /dev/null
@@ -0,0 +1,78 @@
+/* **************************************************************************************
+background-dark-green.png:       PNG image data, 32 x 32, 8-bit/color RGBA, non-interlaced
+background-green.png:            PNG image data, 30 x 30, 8-bit/color RGB, non-interlaced
+border-scale.png:                PNG image data, 28 x 28, 8-bit/color RGBA, non-interlaced
+button-3stage-fulldown.png:      PNG image data, 56 x 40, 8-bit/color RGBA, non-interlaced
+button-3stage-selected.png:      PNG image data, 56 x 40, 8-bit/color RGBA, non-interlaced
+button-3stage-unselected.png:    PNG image data, 56 x 40, 8-bit/color RGBA, non-interlaced
+button-full-blinking.png:        PNG image data, 56 x 40, 8-bit/color RGBA, non-interlaced
+button-full-clicked.png:         PNG image data, 56 x 40, 8-bit/color RGBA, non-interlaced
+button-full-normal.png:          PNG image data, 56 x 40, 8-bit/color RGBA, non-interlaced
+button-full-unblinking.png:      PNG image data, 56 x 40, 8-bit/color RGBA, non-interlaced
+button-off.png:                  PNG image data, 57 x 20, 8-bit/color RGB, non-interlaced
+button-on.png:                   PNG image data, 57 x 20, 8-bit/color RGB, non-interlaced
+button-small-clicked.png:        PNG image data, 28 x 20, 8-bit/color RGBA, non-interlaced
+button-small-normal.png:         PNG image data, 28 x 20, 8-bit/color RGBA, non-interlaced
+close_button.png:                PNG image data, 8 x 8, 8-bit/color RGBA, non-interlaced
+compact-nexttrack-clicked.png:   PNG image data, 27 x 20, 8-bit/color RGB, non-interlaced
+compact-nexttrack-normal.png:    PNG image data, 27 x 20, 8-bit/color RGB, non-interlaced
+compact-prevtrack-clicked.png:   PNG image data, 29 x 20, 8-bit/color RGB, non-interlaced
+compact-prevtrack-normal.png:    PNG image data, 29 x 20, 8-bit/color RGB, non-interlaced
+compact-seekback-clicked.png:    PNG image data, 29 x 20, 8-bit/color RGB, non-interlaced
+compact-seekback-normal.png:     PNG image data, 29 x 20, 8-bit/color RGB, non-interlaced
+compact-seekforward-clicked.png: PNG image data, 27 x 20, 8-bit/color RGB, non-interlaced
+compact-seekforward-normal.png:  PNG image data, 27 x 20, 8-bit/color RGB, non-interlaced
+controls-back.png:               PNG image data, 37 x 19, 8-bit/color RGBA, non-interlaced
+lcd_area.png:                    PNG image data, 14 x 13, 8-bit/color RGB, non-interlaced
+minimize.png:                    PNG image data, 7 x 2, 8-bit/color RGBA, non-interlaced
+playpause-clicked.png:           PNG image data, 56 x 40, 8-bit/color RGB, non-interlaced
+playpause-down.png:              PNG image data, 1600 x 1200, 16-bit/color RGB, non-interlaced
+playpause-normal.png:            PNG image data, 56 x 40, 8-bit/color RGB, non-interlaced
+playpause-orange-held.png:       PNG image data, 56 x 40, 8-bit/color RGB, non-interlaced
+playpause-orange-released.png:   PNG image data, 56 x 40, 8-bit/color RGB, non-interlaced
+set-button-normal.png:           PNG image data, 58 x 43, 8-bit/color RGB, non-interlaced
+small-text-button.png:           PNG image data, 34 x 20, 8-bit/color RGBA, non-interlaced
+vol-display.png:                 PNG image data, 23 x 20, 8-bit/color RGBA, non-interlaced
+vol-label.png:                   PNG image data, 21 x 20, 8-bit/color RGBA, non-interlaced
+vol-minus-clicked.png:           PNG image data, 29 x 20, 8-bit/color RGBA, non-interlaced
+vol-minus.png:                   PNG image data, 29 x 20, 8-bit/color RGBA, non-interlaced
+vol-plus-clicked.png:            PNG image data, 25 x 20, 8-bit/color RGBA, non-interlaced
+vol-plus.png:                    PNG image data, 25 x 20, 8-bit/color RGBA, non-interlaced
+
+
+************************************************************************ */
+
+        image, "border-scale.png" RAW;
+        image, "button-full-clicked.png" RAW;
+        image, "button-full-normal.png" RAW;
+        image, "lcd_area.png" RAW;
+        image, "background-dark-green.png" RAW;
+        image, "controls-back.png" RAW;
+        image, "button-3stage-fulldown.png"     RAW;
+        image, "button-3stage-selected.png"     RAW;
+        image, "button-3stage-unselected.png"   RAW;
+        image, "button-full-blinking.png" RAW;
+        image, "button-full-unblinking.png" RAW;
+        image, "vol-display.png" RAW;
+        image, "vol-label.png" RAW;
+        image, "vol-minus.png" RAW;
+        image, "vol-plus.png" RAW;
+        image, "vol-minus-clicked.png" RAW;
+        image, "vol-plus-clicked.png" RAW;
+        image, "small-text-button.png" RAW;
+        image, "button-small-normal.png" RAW;
+        image, "button-small-clicked.png" RAW;
+        image, "button-on.png" RAW;
+        image, "button-off.png" RAW;
+        image, "close_button.png" RAW;
+        image, "minimize.png" RAW;
+        image, "compact-nexttrack-normal.png" RAW;
+        image, "compact-prevtrack-normal.png" RAW;
+        image, "compact-seekback-normal.png" RAW;
+        image, "compact-seekforward-normal.png" RAW;
+        image, "compact-nexttrack-clicked.png" RAW;
+        image, "compact-prevtrack-clicked.png" RAW;
+        image, "compact-seekback-clicked.png" RAW;
+        image, "compact-seekforward-clicked.png" RAW;
+        image, "playpause-normal.png" RAW;
+        image, "playpause-clicked.png" RAW;
diff --git a/data/themes/streamline/streamline_parts.edc b/data/themes/streamline/streamline_parts.edc
new file mode 100644 (file)
index 0000000..7984f8e
--- /dev/null
@@ -0,0 +1,1023 @@
+                        /* Border Scaled Image for Background */
+                        part {
+                                name, "background";
+                                mouse_events, 0;
+                                type,   IMAGE;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                        }
+                                        image {
+                                                normal, "border-scale.png";
+                                                border, 6 6 6 6;
+                                        }
+
+                                        fill {
+                                                smooth, 0;
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "title";
+                                type,   TEXT;
+                                //effect, SHADOW;
+                                mouse_events, 1;
+                               repeat_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 4;
+                                        }
+                                        rel2 {
+                                                relative, 1.0 0.0;
+                                                offset, -1 15;
+                                        }
+                                        color,  255 255 255 255;
+                                        text {
+                                                text, "Euphoria";
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 8;       /* Font Size */
+                                                align,   0.5 1.0;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "titlebar";
+                                type, RECT;
+                                mouse_events, 1;
+                               repeat_events, 1;
+
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 0.0;
+                                                offset, -1 16;
+                                        }
+
+                                        color, 0 0 0 0;
+                                }
+
+                        }
+
+
+                        part {
+                                name, "quit";
+                                type, IMAGE;
+                                mouse_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        rel1 {
+                                                relative, 1.0 0.0;
+                                                offset, -15 4;
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 0.0;
+                                                offset, -8 11;
+                                        }
+
+                                        image {
+                                                normal, "close_button.png";
+                                        }
+
+                                        fill {
+                                                smooth, 0;
+                                        }
+                                }
+                        }
+
+                        /* LCD Backdrop Image */
+                        part {
+                                name, "lcd_backdrop";
+                                type, IMAGE;
+                                mouse_events, 0;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 4 17;
+                                        }
+
+                                        rel2 {
+                                                relative, 0.0 0.0;
+                                                offset, 193 86;
+                                        }
+
+                                        image {
+                                                normal, "lcd_area.png";
+                                                border, 5 5 5 5;
+                                        }
+
+                                        fill {
+                                                smooth, 0;
+                                        }
+                                }
+                        }
+
+                        /* LCD Clipping Area - Invisible Rect */
+                        part {
+                                name, "lcd_clip";
+                                type, RECT;
+                                mouse_events, 0;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 5 5;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -5 -5;
+                                                to, "lcd_backdrop";
+                                        }
+                                        //color, 0 0 0 0;
+
+                                }
+                        }
+
+                        part {
+                                name, "artist_name";
+                                type,   TEXT;
+                                //effect, SOFT_OUTLINE;
+                                mouse_events, 0;
+                                clip_to, "lcd_clip";
+                                description {
+                                        state,  "default" 0.0;
+
+                                        /* Use the relative size of the LCD itself, then position with align */
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 8 0;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "lcd_backdrop";
+                                        }
+
+
+                                        color,  181 247 255 255;
+                                        text {
+                                                text, "Artist Name";       /* Text String */
+                                                font, "redensek";   /* Only font Vera works!  Use other and segv */
+                                                size, 12;       /* Font Size */
+                                                align, 0.0 0.1;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "album_name";
+                                type,   TEXT;
+                                //effect, SOFT_OUTLINE;
+                                mouse_events, 0;
+                                clip_to, "lcd_clip";
+                                description {
+                                        state,  "default" 0.0;
+
+                                        /* Use the relative size of the LCD itself, then position with align */
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 8 0;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "lcd_backdrop";
+                                        }
+
+
+                                        color,  181 247 255 255;
+                                        text {
+                                                text, "Album Name";       /* Text String */
+                                                font, "redensek";   /* Only font Vera works!  Use other and segv */
+                                                size, 12;       /* Font Size */
+                                                align, 0.0 0.3;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "song_name";
+                                type,   TEXT;
+                                //effect, SOFT_OUTLINE;
+                                mouse_events, 0;
+                                clip_to, "lcd_clip";
+                                description {
+                                        state,  "default" 0.0;
+
+                                        /* Use the relative size of the LCD itself, then position with align */
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 8 0;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "lcd_backdrop";
+                                        }
+
+
+                                        color,  181 247 255 255;
+                                        text {
+                                                text, "Song Name";       /* Text String */
+                                                font, "redensek";   /* Only font Vera works!  Use other and segv */
+                                                size, 12;       /* Font Size */
+                                                align, 0.0 0.5;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+                        /* Time Counter  */
+                        part {
+                                name, "time_text";
+                                type,   TEXT;
+                                //effect, OUTLINE_SOFT_SHADOW;
+                                clip_to, "lcd_clip";
+                                mouse_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        /* Use the relative size of the LCD itself, then position with align */
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -9 -1;
+                                                to, "lcd_backdrop";
+                                        }
+
+
+                                        color,  181 247 255 255;
+                                        text {
+                                                text, "0:00";       /* Text String */
+                                                font, "micro";   /* Only font Vera works!  Use other and segv */
+                                                size, 26;       /* Font Size */
+                                                align, 1.0 1.0;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+
+                        /************* Buttons *******************************/
+
+                /* Button Area */
+                part {
+                        name, "button_background";
+                        type, IMAGE;
+                        mouse_events, 0;
+                        description {
+                                state,  "default" 0.0;
+
+                                rel1 {
+                                        relative, 0.0 0.0;
+                                        offset, 196 40;
+                                }
+
+                                rel2 {
+                                        relative, 0.0 0.0;
+                                        offset, 316 86;
+                                }
+
+                                image {
+                                        normal, "controls-back.png";
+                                        border, 5 5 5 5;
+                                }
+
+                                fill {
+                                        smooth, 0;
+                                }
+                        }
+                }
+
+
+                        /* Previous Button */
+ part {
+                        name, "previous_button";
+                        mouse_events, 1;
+                        description {
+                                state,  "default" 0.0;
+                                min, 29 20;
+                                max, 29 20;
+
+                                rel1 {
+                                        relative, 0.0 0.0;
+                                        offset, 3 2;
+                                        to, "button_background";
+                                }
+                                rel2 {
+                                        relative, 0.0 0.0;
+                                        offset, 32 22;
+                                        to, "button_background";
+                                }
+                                image {
+                                        normal, "compact-prevtrack-normal.png";
+                                }
+                        }
+
+                        description {
+                                state,  "clicked" 0.0;
+                                min, 29 20;
+                                max, 29 20;
+
+                                rel1 {
+                                        relative, 0.0 0.0;
+                                        offset, 3 2;
+                                        to, "button_background";
+                                }
+                                rel2 {
+                                        relative, 0.0 0.0;
+                                        offset, 32 22;
+                                        to, "button_background";
+                                }
+
+                                image {
+                                        normal, "compact-prevtrack-clicked.png";
+                                }
+                        }
+
+                }
+
+
+                        /* Play Button */
+                part {
+                        name, "play_button";
+                        mouse_events, 1;
+                        description {
+                                state,  "default" 0.0;
+                                min, 56 40;
+                                max, 56 40;
+                                align, 0.5 0.0;
+
+                                rel1 {
+                                        relative, 0.0 0.0;
+                                        offset, 62 3;
+                                        to, "button_background";
+                                }
+                                rel2 {
+                                        relative, 0.0 0.0;
+                                        offset, 117 43;
+                                        to, "button_background";
+                                }
+                                image {
+                                        normal, "playpause-normal.png";
+                                }
+                        }
+                        description {
+                                state,  "clicked" 0.0;
+                                min, 56 40;
+                                max, 56 40;
+                                align, 0.5 0.0;
+
+                                rel1 {
+                                        relative, 0.0 0.0;
+                                        offset, 62 3;
+                                        to, "button_background";
+                                }
+                                rel2 {
+                                        relative, 0.0 0.0;
+                                        offset, 117 43;
+                                        to, "button_background";
+                                }
+                                image {
+                                        normal, "playpause-clicked.png";
+                                }
+                        }
+                        description {
+                                state,  "blink" 0.0;
+                                min, 56 40;
+                                max, 56 40;
+                                align, 0.5 0.0;
+
+                                rel1 {
+                                        relative, 1.0 0.0;
+                                        offset, 0 0;
+                                        to, "previous_button";
+                                }
+                                rel2 {
+                                        relative, 0.0 1.0;
+                                        offset, -0 -0;
+                                        to, "next_button";
+                                }
+
+                                image {
+                                        normal, "button-full-blinking.png";
+                                        tween,  "button-full-unblinking.png";
+                                }
+                        }
+
+                }
+
+                /* Pause Button */
+
+                part {
+                        name, "pause_button";
+                        mouse_events, 0;
+                        description {
+                                state,  "default" 0.0;
+                                min, 56 40;
+                                max, 56 40;
+                                visible, 0;
+
+                                rel1 {
+                                        relative, 1.0 0.0;
+                                        offset, 0 0;
+                                        to, "seekback_button";
+                                }
+                                rel2 {
+                                        relative, 0.0 1.0;
+                                        offset, -0 -0;
+                                        to, "seekforward_button";
+                                }
+
+                                image {
+                                        normal, "button-3stage-unselected.png";
+                                        tween,  "button-3stage-fulldown.png";
+                                }
+                        }
+                        description {
+                                state,  "clicked" 0.0;
+                                min, 56 40;
+                                max, 56 40;
+                                visible, 1;
+
+                                rel1 {
+                                        relative, 1.0 0.0;
+                                        offset, 0 0;
+                                        to, "seekback_button";
+                                }
+                                rel2 {
+                                        relative, 0.0 1.0;
+                                        offset, -0 -0;
+                                        to, "seekforward_button";
+                                }
+
+                                image {
+                                        normal, "button-3stage-selected.png";
+                                        tween, "button-3stage-fulldown.png";
+                                }
+                        }
+                        description {
+                                state,  "blink" 0.0;
+                                min, 56 40;
+                                max, 56 40;
+                                visible, 1;
+
+                                rel1 {
+                                        relative, 1.0 0.0;
+                                        offset, 0 0;
+                                        to, "seekback_button";
+                                }
+                                rel2 {
+                                        relative, 0.0 1.0;
+                                        offset, -0 -0;
+                                        to, "seekforward_button";
+                                }
+
+                                image {
+                                        normal, "button-full-blinking.png";
+                                        tween,  "button-full-unblinking.png";
+                                }
+                        }
+                }
+
+
+
+                        /* Next Button */
+                part {
+                        name, "next_button";
+                        mouse_events, 1;
+                        description {
+                                state,  "default" 0.0;
+                                min, 27 20;
+                                max, 27 20;
+
+                                rel1 {
+                                        relative, 0.0 0.0;
+                                        offset, 32 2;
+                                        to, "button_background";
+                                }
+                                rel2 {
+                                        relative, 0.0 0.0;
+                                        offset, 59 22;
+                                        to, "button_background";
+                                }
+                                image {
+                                        normal, "compact-nexttrack-normal.png";
+                                }
+                        }
+                        description {
+                                state,  "clicked" 0.0;
+                                min, 27 20;
+                                max, 27 20;
+
+                                rel1 {
+                                        relative, 0.0 0.0;
+                                        offset, 32 2;
+                                        to, "button_background";
+                                }
+                                rel2 {
+                                        relative, 0.0 0.0;
+                                        offset, 59 22;
+                                        to, "button_background";
+                                }
+                                image {
+                                        normal, "compact-nexttrack-clicked.png";
+                                }
+                        }
+                }
+
+                        /* Seekback Button */
+                part {
+                        name, "seekback_button";
+                        mouse_events, 1;
+                        description {
+                                state,  "default" 0.0;
+                                min, 29 20;
+                                max, 29 20;
+                                visible, 1;
+
+                                rel1 {
+                                        relative, 0.0 0.0;
+                                        offset, 3 24;
+                                        to, "button_background";
+                                }
+                                rel2 {
+                                        relative, 0.0 0.0;
+                                        offset, 32 44;
+                                        to, "button_background";
+                                }
+
+                                image {
+                                        normal, "compact-seekback-normal.png";
+                                }
+                        }
+                        description {
+                                state,  "clicked" 0.0;
+                                min, 29 20;
+                                max, 29 20;
+                                visible, 1;
+
+                                rel1 {
+                                        relative, 0.0 0.0;
+                                        offset, 3 24;
+                                        to, "button_background";
+                                }
+                                rel2 {
+                                        relative, 0.0 0.0;
+                                        offset, 32 44;
+                                        to, "button_background";
+                                }
+
+                                image {
+                                        normal, "compact-seekback-clicked.png";
+                                }
+                        }
+                }
+
+                        /* Seekforward Button */
+                part {
+                        name, "seekforward_button";
+                        mouse_events, 1;
+                        description {
+                                state,  "default" 0.0;
+                                min, 27 20;
+                                max, 27 20;
+                                visible, 1;
+
+                                rel1 {
+                                        relative, 0.0 0.0;
+                                        offset, 32 24;
+                                        to, "button_background";
+                                }
+                                rel2 {
+                                        relative, 0.0 0.0;
+                                        offset, 59 44;
+                                        to, "button_background";
+                                }
+
+                                image {
+                                        normal, "compact-seekforward-normal.png";
+                                }
+                        }
+                        description {
+                                state,  "clicked" 0.0;
+                                min, 27 20;
+                                max, 27 20;
+                                visible, 1;
+
+                                rel1 {
+                                        relative, 0.0 0.0;
+                                        offset, 32 24;
+                                        to, "button_background";
+                                }
+                                rel2 {
+                                        relative, 0.0 0.0;
+                                        offset, 59 44;
+                                        to, "button_background";
+                                }
+
+                                image {
+                                        normal, "compact-seekforward-clicked.png";
+                                }
+                        }
+                }
+
+
+                        /*************** Toggle Repeat **************/
+
+                        part {
+                                name, "repeat_toggle_disabled_img";
+                                type, IMAGE;
+                                mouse_events, 0;
+
+                                description {
+                                        state, "default" 0.0;
+                                        visible, 0;
+                                        min, 57 20;
+                                        max, 57 20;
+
+                                        rel1 {
+                                                relative, 0.0 1.0;
+                                                offset, 25 28;
+                                                to, "button_background";
+                                        }
+
+                                        rel2 {
+                                                relative, 0.25 1.0;
+                                                offset, 0 0;
+                                                to, "button_background";
+                                        }
+
+                                        image {
+                                                normal, "button-off.png";
+                                        }
+                                }
+
+                                description {
+                                        state, "disabled" 0.0;
+                                       inherit, "default" 0.0;
+                                        visible, 0;
+                                }
+                        }
+
+                        part {
+                                name, "repeat_toggle_enabled_img";
+                                mouse_events, 0;
+
+                                description {
+                                        state, "default" 0.0;
+                                        visible, 0;
+                                        min, 57 20;
+                                        max, 57 20;
+
+                                        rel1 {
+                                                relative, 0.0 1.0;
+                                                offset, 25 28;
+                                                to, "button_background";
+                                        }
+
+                                        rel2 {
+                                                relative, 0.25 1.0;
+                                                offset, 0 0;
+                                                to, "button_background";
+                                        }
+
+                                        image {
+                                                normal, "button-on.png";
+                                        }
+                                }
+
+                                description {
+                                        state, "enabled" 0.0;
+                                       inherit, "default" 0.0;
+                                        visible, 0;
+                                }
+                        }
+                        part {
+                                name, "repeat_toggle_label";
+                                type, TEXT;
+                                mouse_events, 0;
+
+                                description {
+                                        state, "default" 0.0;
+                                        visible, 0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "repeat_toggle_disabled_img";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "repeat_toggle_disabled_img";
+                                        }
+
+                                        color, 0 0 0 255;
+
+                                        text {
+                                                text, "REPEAT";
+                                                font, "Vera";
+                                                size, 5;
+                                                align, 0.5 0.6;
+                                        }
+                                }
+                        }
+
+
+
+
+
+                        /********** Volume  Controls ***************************************/
+                part {
+                        name, "vol_label";
+                        mouse_events, 0;
+                        description {
+                                state,  "default" 0.0;
+                                min, 21 20;
+                                max, 21 20;
+
+                                rel1 {
+                                        relative, 0.0 0.0;
+                                        offset, 282 17;
+                                }
+                                rel2 {
+                                        relative, 0.0 0.0;
+                                        offset, 305 36;
+                                }
+
+                                image {
+                                        normal, "vol-label.png";
+                                }
+                        }
+                }
+
+                part {
+                        name, "vol_label_text";
+                        type, TEXT;
+                        mouse_events, 0;                /* Does part accept mouse events? */
+                        description {
+                                state, "default" 0.0;
+
+                                rel1 {
+                                        relative, 0.0 0.0;
+                                        offset, 0 0;
+                                        to, "vol_label";
+                                }
+                                rel2 {
+                                        relative, 1.0 1.0;
+                                        offset, -1 -1;
+                                        to, "vol_label";
+                                }
+
+
+                                color, 255 255 255 255;  /* Color of text */
+                                color2, 0 0 255 255;    /* Does nothing for SOFT_SHADOW */
+                                color3, 0 0 0 32;        /* Color of shadow */
+
+                                text {
+                                        text, "VOL";       /* Text String */
+                                        font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                        size, 5;        /* Font Size */
+                                        align,   0.5 0.6;       /* Text alignment based on rel1/rel2 */
+                                }
+                        }
+                }
+
+                part {
+                        name, "vol_display";
+                        mouse_events, 0;
+                        description {
+                                state,  "default" 0.0;
+                                min, 23 20;
+                                max, 23 20;
+
+                                rel1 {
+                                        relative, 0.0 0.0;
+                                        offset, -23 0;
+                                        to, "vol_label";
+                                }
+                                rel2 {
+                                        relative, 0.0 1.0;
+                                        offset, 0 0;
+                                        to, "vol_label";
+                                }
+
+                                image {
+                                        normal, "vol-display.png";
+                                }
+                        }
+                }
+
+
+                part {
+                        name, "vol_display_text";
+                        type,   TEXT;
+                        //clip_to, "vol_display";
+                        description {
+                                state,  "default" 0.0;
+
+                                /* Use the relative size of the LCD itself, then position with align */
+                                rel1 {
+                                        relative, 0.0 0.0;
+                                        offset, 0 0;
+                                        to, "vol_display";
+                                }
+
+                                rel2 {
+                                        relative, 1.0 1.0;
+                                        offset, -1 -1;
+                                        to, "vol_display";
+                                }
+
+
+                                color,  181 247 255 255;
+                                text {
+                                        text, "00";       /* Text String */
+                                        font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                        size, 8;       /* Font Size */
+                                        align, 0.5 0.6;       /* Text alignment based on rel1/rel2 */
+                                }
+                        }
+                }
+
+                part {
+                        name, "vol_incr_button";
+                        mouse_events, 1;
+                        description {
+                                state,  "default" 0.0;
+                                min, 25 20;
+                                max, 25 20;
+
+                                rel1 {
+                                        relative, 0.0 0.0;
+                                        offset, -25 0;
+                                        to, "vol_display";
+                                }
+                                rel2 {
+                                        relative, 0.0 1.0;
+                                        offset, 0 0;
+                                        to, "vol_display";
+                                }
+
+                                image {
+                                        normal, "vol-plus.png";
+                                }
+                        }
+                        description {
+                                state,  "clicked" 0.0;
+                                min, 25 20;
+                                max, 25 20;
+
+                                rel1 {
+                                        relative, 0.0 0.0;
+                                        offset, -25 0;
+                                        to, "vol_display";
+                                }
+                                rel2 {
+                                        relative, 0.0 1.0;
+                                        offset, 0 0;
+                                        to, "vol_display";
+                                }
+
+                                image {
+                                        normal, "vol-plus-clicked.png";
+                                }
+                        }
+                }
+
+                part {
+                        name, "vol_decr_button";
+                        mouse_events, 1;
+                        description {
+                                state,  "default" 0.0;
+                                min, 29 20;
+                                max, 29 20;
+
+                                rel1 {
+                                        relative, 0.0 0.0;
+                                        offset, -29 0;
+                                        to, "vol_incr_button";
+                                }
+                                rel2 {
+                                        relative, 0.0 1.0;
+                                        offset, 0 0;
+                                        to, "vol_incr_button";
+                                }
+
+                                image {
+                                        normal, "vol-minus.png";
+                                }
+                        }
+                        description {
+                                state,  "clicked" 0.0;
+                                min, 29 20;
+                                max, 29 20;
+
+                                rel1 {
+                                        relative, 0.0 0.0;
+                                        offset, -29 0;
+                                        to, "vol_incr_button";
+                                }
+                                rel2 {
+                                        relative, 0.0 1.0;
+                                        offset, 0 0;
+                                        to, "vol_incr_button";
+                                }
+
+                                image {
+                                        normal, "vol-minus-clicked.png";
+                                }
+                        }
+                }
+
+
+                        /************ PLAYLIST **************************************************/
+
+                /* LCD Playlist Backdrop Image */
+                part {
+                        name, "playlist_backdrop";
+                        type, IMAGE;
+                        mouse_events, 0;
+                        description {
+                                state,  "default" 0.0;
+
+                                rel1 {
+                                        relative, 0.0 0.0;
+                                        offset, 319 17;
+                                }
+
+                                rel2 {
+                                        relative, 1.0 1.0;
+                                        offset, -5 -4;
+                                }
+
+                                image {
+                                        normal, "lcd_area.png";
+                                        border, 5 5 5 5;
+                                }
+
+                                fill {
+                                        smooth, 0;
+                                }
+                        }
+                }
+
+                part {
+                        name, "playlist";
+                        type, RECT;
+                        mouse_events, 1;
+
+                        description {
+                                state, "default" 0.0;
+
+                                rel1 {
+                                        relative, 0.0 0.0;
+                                        offset, 8 5;
+                                        to, "playlist_backdrop";
+                                }
+
+                                rel2 {
+                                        relative, 1.0 1.0;
+                                        offset, -6 -6;
+                                        to, "playlist_backdrop";
+                                }
+                                color, 0 0 0 0;
+                        }
+                }
+
+
diff --git a/data/themes/streamline/streamline_playlist_parts.edc b/data/themes/streamline/streamline_playlist_parts.edc
new file mode 100644 (file)
index 0000000..edb01f7
--- /dev/null
@@ -0,0 +1,64 @@
+
+                       part {
+                                name, "clip";
+                                type, RECT;
+
+                                description {
+                                        state, "default" 0.0;
+                                }
+                        }
+
+                        part {
+                                name, "background";
+                                type, RECT;
+                                clip_to, "clip";
+
+                                description {
+                                        state, "default" 0.0;
+                                        color, 0 0 0 0;
+                                }
+
+                                description {
+                                        state, "selected" 0.0;
+                                        color, 73 104 111 128;
+                                }
+                        }
+
+                        part {
+                                name, "title";
+                                type, TEXT;
+                                mouse_events, 1;
+                                clip_to, "clip";
+
+                                description {
+                                        color, 181 247 255 255;
+                                        align, 0.0 0.0;
+                                        max, 150 12;
+
+                                        text {
+                                                text, "Dummy";
+                                                font, "redensek";
+                                                size, 12;
+                                                align, 0.0 0.0;
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "length";
+                                type, TEXT;
+                                mouse_events, 1;
+                                clip_to, "clip";
+
+                                description {
+                                        color, 181 247 255 255;
+
+                                        text {
+                                                text, "2:55";
+                                                font, "redensek";
+                                                size, 12;
+                                                align, 1.0 0.0;
+                                        }
+                                }
+                        }
+
diff --git a/data/themes/streamline/streamline_playlist_progs.edc b/data/themes/streamline/streamline_playlist_progs.edc
new file mode 100644 (file)
index 0000000..7bcfb57
--- /dev/null
@@ -0,0 +1,47 @@
+
+                        program {
+                                name, "selected_mouse";
+                                signal, "mouse,clicked,1";
+                                source, "*";
+                                action, SIGNAL_EMIT "PLAYLIST_ITEM_SELECTED" "";
+                        }
+
+                        program {
+                                name, "selected";
+                                signal, "PLAYLIST_ITEM_SELECTED";
+                                source, "";
+                                action, STATE_SET "selected" 0.0;
+                                transition, LINEAR 0.2;
+                                target, "background";
+                        }
+
+                        program {
+                                name, "unselected";
+                                signal, "PLAYLIST_ITEM_UNSELECTED";
+                                source, "";
+                                action, STATE_SET "default" 0.0;
+                                transition, LINEAR 0.2;
+                                target, "background";
+                        }
+
+                        program {
+                                name, "dbl_clicked";
+                                signal, "mouse,down,1,double";
+                                source, "*";
+                                action, SIGNAL_EMIT "PLAYLIST_ITEM_PLAY" "";
+                        }
+
+                        program {
+                                name, "scroll_up";
+                                signal, "mouse,wheel,0,-1";
+                                source, "*";
+                                action, SIGNAL_EMIT "PLAYLIST_SCROLL_UP" "";
+                        }
+
+                        program {
+                                name, "scroll_down";
+                                signal, "mouse,wheel,0,1";
+                                source, "*";
+                                action, SIGNAL_EMIT "PLAYLIST_SCROLL_DOWN" "";
+                        }
+
diff --git a/data/themes/streamline/streamline_progs.edc b/data/themes/streamline/streamline_progs.edc
new file mode 100644 (file)
index 0000000..1bb3af0
--- /dev/null
@@ -0,0 +1,361 @@
+
+                        /* Quit Handlers */
+                        program {
+                                name, "quit_button_in";
+                                signal, "mouse,in";
+                                source, "quit";
+                                action, STATE_SET "active" 0.0;
+                                target, "quit";
+                                transition, LINEAR 0.5;
+                        }
+                        program {
+                                name, "quit_button_out";
+                                signal, "mouse,out";
+                                source, "quit";
+                                action, STATE_SET "default" 0.0;
+                                target, "quit";
+                                transition, LINEAR 0.5;
+                        }
+                        program {
+                                name, "quit_button_click";
+                                signal, "mouse,clicked,1";
+                                source, "quit";
+                                action, SIGNAL_EMIT "QUIT" "quit";
+                        }
+
+                        /* switch to "small" mode */
+                        program {
+                                name, "titlebar_dbl_click";
+                                signal, "mouse,down,1,double";
+                                source, "titlebar";
+                                action, SIGNAL_EMIT "SWITCH_GROUP" "euphoria_small";
+                        }
+
+                        /* Previous File */
+                        program {
+                                name,       "previous_click";
+                                signal,     "mouse,down,1";
+                                source,     "previous_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "previous_button";
+                        }
+                        program {
+                                name,       "previous_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "previous_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "previous_button";
+                        }
+
+                        program {
+                                name,       "previous_click_emission";
+                                signal,     "mouse,up,1";
+                                source,     "previous_button";
+                                /* Emit signal to handler "previous file", from part/sender "previous_button" */
+                                /* Catch with the following Edje code in your app */
+                                /* edje_object_signal_callback_add(edje, "playback.prev", "previous_button", function) */
+                                action,     SIGNAL_EMIT "playback.prev" "previous_button";
+                        }
+
+                        program {
+                                name, "time_text_click";
+                                signal, "mouse,up,1";
+                                source, "time_text";
+                                action, SIGNAL_EMIT "TOGGLE_TIME_DISPLAY_MODE" "time_text";
+                        }
+
+                        /* Seek Backwards */
+
+                        program {
+                                name,       "seekback_click";
+                                signal,     "mouse,down,1";
+                                source,     "seekback_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "seekback_button";
+                        }
+                        program {
+                                name,       "seekback_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "seekback_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "seekback_button";
+                        }
+
+                        program {
+                                name,       "seekback_start";
+                                signal,     "mouse,down,1";
+                                source,     "seekback_button";
+                                action,     SIGNAL_EMIT "SEEK_BACK_START" "seekback_button";
+                        }
+
+                        program {
+                                name,       "seekback_stop";
+                                signal,     "mouse,up,1";
+                                source,     "seekback_button";
+                                action,     SIGNAL_EMIT "SEEK_BACK_STOP" "seekback_button";
+                        }
+
+
+                        /* Play */
+                        program {
+                                name,       "play_click";
+                                signal,     "mouse,down,1";
+                                source,     "play_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "play_button";
+                                //after,      "play_blink";
+                        }
+
+                        program {
+                                name,       "play_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "play_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "play_button";
+                                //after,      "pause_unblink";
+                        }
+
+                        /* Stop Pause Blinker */
+                        /* When using the action STOP, the target is the program to be stopped */
+                        program {
+                                name,       "pause_unblink";
+                                source,     "*";
+                                action,     ACTION_STOP;
+                                target,     "pause_blink";
+                                after,      "play_blink";
+                        }
+
+
+                        /* Loop Play Blinker */
+                        program {
+                                name,       "play_blink";
+                                source,     "*";
+                                action,     STATE_SET "blink" 0.0;
+                                transition, LINEAR 1.0;
+                                target,     "play_button";
+                                after,      "play_blink";
+                        }
+
+                        program {
+                                name,       "play_click_emission";
+                                signal,     "mouse,up,1";
+                                source,     "play_button";
+                                action,     SIGNAL_EMIT "playback.play" "play_button";
+                        }
+                        /**************** Pause ****************/
+                        program {
+                                name,       "pause_click";
+                                signal,     "mouse,down,1";
+                                source,     "pause_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.2;
+                                target,     "pause_button";
+                                //after,            "pause_blink";
+                        }
+
+                        program {
+                                name,       "pause_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "pause_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.2;
+                                target,     "pause_button";
+                                //after,      "play_unblink";
+                        }
+
+                        program {
+                                name,       "play_unblink";
+                                source,     "*";
+                                action,     ACTION_STOP;
+                                target,     "play_blink";
+                                after,      "pause_blink";
+                        }
+
+                        program {
+                                name,       "pause_blink";
+                                source,     "*";
+                                action,     STATE_SET "blink" 0.0;
+                                transition, LINEAR 1.0;
+                                target,     "pause_button";
+                                after,      "pause_blink";
+                        }
+
+                        program {
+                                name,       "pause_click_emission";
+                                signal,     "mouse,up,1";
+                                source,     "pause_button";
+                                action,     SIGNAL_EMIT "playback.pause" "pause_button";
+                        }
+
+                        /**************** Seek Forward ********************/
+                        program {
+                                name,       "seekforward_click";
+                                signal,     "mouse,down,1";
+                                source,     "seekforward_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "seekforward_button";
+                        }
+                        program {
+                                name,       "seekforward_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "seekforward_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "seekforward_button";
+                        }
+
+                        program {
+                                name,       "seekforward_start";
+                                signal,     "mouse,down,1";
+                                source,     "seekforward_button";
+                                action,     SIGNAL_EMIT "SEEK_FORWARD_START" "seekforward_button";
+                        }
+
+                        program {
+                                name,       "seekforward_stop";
+                                signal,     "mouse,up,1";
+                                source,     "seekforward_button";
+                                action,     SIGNAL_EMIT "SEEK_FORWARD_STOP" "seekforward_button";
+                        }
+
+
+                        /* Next File */
+                        program {
+                                name,       "next_click";
+                                signal,     "mouse,down,1";
+                                source,     "next_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "next_button";
+                        }
+                        program {
+                                name,       "next_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "next_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "next_button";
+                        }
+                        program {
+                                name,       "next_click_emission";
+                                signal,     "mouse,up,1";
+                                source,     "next_button";
+                                action,     SIGNAL_EMIT "playback.next" "next_button";
+                        }
+
+                        /* Volume Button Proggies */
+                        /* Raise Volume */
+                        program {
+                                name,       "volplus_click";
+                                signal,     "mouse,down,1";
+                                source,     "vol_incr_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "vol_incr_button";
+                        }
+                        program {
+                                name,       "volplus_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "vol_incr_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "vol_incr_button";
+                        }
+
+                        program {
+                                name,       "vol_incr_sig_wheel1";
+                                signal,     "mouse,wheel,0,-1";
+                                source,     "vol_incr_button";
+                                action,     SIGNAL_EMIT "VOL_INCR" "vol_incr_button";
+                        }
+
+                        program {
+                                name,       "vol_incr_sig_wheel2";
+                                signal,     "mouse,wheel,0,1";
+                                source,     "vol_incr_button";
+                                action,     SIGNAL_EMIT "VOL_DECR" "vol_decr_button";
+                        }
+
+
+                        /** NOTES: All programs MUST have AT LEAST, a NAME, SOURCE (even if "*";), and an ACTION **/
+
+                        program {
+                                name,       "vol_incr_sig";
+                                //signal,           "*";
+                                //source,     "volplus_click";
+                                signal,     "mouse,up,1";
+                                source,     "vol_incr_button";
+                                action,     SIGNAL_EMIT "VOL_INCR" "vol_incr_button";
+                        }
+
+                        /* Lower Volume */
+                        program {
+                                name,       "volminus_click";
+                                signal,     "mouse,down,1";
+                                source,     "vol_decr_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "vol_decr_button";
+                        }
+                        program {
+                                name,       "volminus_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "vol_decr_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "vol_decr_button";
+                        }
+                        program {
+                                name,       "vol_decr_sig";
+                                signal,     "mouse,up,1";
+                                source,     "vol_decr_button";
+                                action,     SIGNAL_EMIT "VOL_DECR" "vol_decr_button";
+                        }
+
+                        program {
+                                name,       "vol_decr_sig_wheel1";
+                                signal,     "mouse,wheel,0,-1";
+                                source,     "vol_decr_button";
+                                action,     SIGNAL_EMIT "VOL_INCR" "vol_incr_button";
+                        }
+
+                        program {
+                                name,       "vol_decr_sig_wheel2";
+                                signal,     "mouse,wheel,0,1";
+                                source,     "vol_decr_button";
+                                action,     SIGNAL_EMIT "VOL_DECR" "vol_decr_button";
+                        }
+
+                        program {
+                                name, "repeat_toggle_activated";
+                                signal, "mouse,clicked,1";
+                                source, "repeat_toggle_disabled_img";
+                                action, STATE_SET "disabled" 0.0;
+                                target, "repeat_toggle_disabled_img";
+                                action, STATE_SET "enabled" 0.0;
+                                target, "repeat_toggle_enabled_img";
+                                after, "repeat_toggle_signal";
+                        }
+
+                        program {
+                                name, "repeat_toggle_deactivated";
+                                signal, "mouse,clicked,1";
+                                source, "repeat_toggle_enabled_img";
+                                action, STATE_SET "default" 0.0;
+                                target, "repeat_toggle_enabled_img";
+                                action, STATE_SET "default" 0.0;
+                                target, "repeat_toggle_disabled_img";
+                                after, "repeat_toggle_signal";
+                        }
+
+                        program {
+                                name, "repeat_toggle_signal";
+                                action, SIGNAL_EMIT "TOGGLE_REPEAT_MODE" "repeat_mode";
+                        }
diff --git a/data/themes/streamline/streamline_small_parts.edc b/data/themes/streamline/streamline_small_parts.edc
new file mode 100644 (file)
index 0000000..cb0f28e
--- /dev/null
@@ -0,0 +1,734 @@
+/** Minimized functionality by digitalfallout **/
+                        part {
+                                name, "background";
+                                mouse_events, 1;
+                               repeat_events, 1;
+                                type, IMAGE;
+
+                                description {
+                                        state, "default" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                        }
+                                        image {
+                                                normal, "border-scale.png";
+                                                border, 6 6 6 6;
+                                        }
+                                        fill {
+                                                smooth, 0;
+                                        }
+                                }
+                        }
+                        part {
+                                name, "title";
+                                type,   TEXT;
+                                mouse_events, 1;
+                               repeat_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -4 -4;
+                                        }
+                                        color,  255 255 255 255;
+                                        text {
+                                                text, "Euphoria";
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 6;       /* Font Size */
+                                                align,   1.0 1.0;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+                        /***** START LCD AREA *****/
+                        /* LCD Backdrop Image */
+                        part {
+                                name, "lcd_backdrop";
+                                type, IMAGE;
+                                mouse_events, 0;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        /* Part should fill from the far left, 20 pixels down */
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 4 4;
+                                        }
+
+                                        /* all the way to the far right, 40 pixels north of the bottom right corner */
+                                        rel2 {
+                                                relative, 1.0 0.0;
+                                                offset, -6 35;
+                                        }
+
+                                        image {
+                                                normal, "lcd_area.png";
+                                                border, 5 5 5 5;
+                                        }
+
+                                        fill {
+                                                smooth, 0;
+                                        }
+                                }
+                        }
+                        /* LCD Clipping Area - Invisible Rect */
+                        part {
+                                name, "lcd_clip";
+                                type, RECT;
+                                mouse_events, 0;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 5 5;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -5 -5;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                }
+                        }
+
+                        part {
+                                name, "artist_name";
+                                type,   TEXT;
+                                mouse_events, 0;
+                                clip_to, "lcd_clip";
+                                description {
+                                        state,  "default" 0.0;
+
+                                        /* Use the relative size of the LCD itself, then position with align */
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 8 0;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "lcd_backdrop";
+                                        }
+
+
+                                        color,  181 247 255 255;
+                                        text {
+                                                text, "Artist Name";       /* Text String */
+                                                font, "redensek";   /* Only font Vera works!  Use other and segv */
+                                                size, 12;       /* Font Size */
+                                                align, 0.0 0.1;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "song_name";
+                                type,   TEXT;
+                                mouse_events, 0;
+                                clip_to, "lcd_clip";
+                                description {
+                                        state,  "default" 0.0;
+
+                                        /* Use the relative size of the LCD itself, then position with align */
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 8 5;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "lcd_backdrop";
+                                        }
+
+
+                                        color,  181 247 255 255;
+                                        text {
+                                                text, "Song Name";       /* Text String */
+                                                font, "redensek";   /* Only font Vera works!  Use other and segv */
+                                                size, 12;       /* Font Size */
+                                                align, 0.0 0.5;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+                        /* Time Counter  */
+                        part {
+                                name, "time_text";
+                                type,   TEXT;
+                                clip_to, "lcd_clip";
+                                mouse_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+
+                                        /* Use the relative size of the LCD itself, then position with align */
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "lcd_backdrop";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -9 -1;
+                                                to, "lcd_backdrop";
+                                        }
+
+
+                                        color,  181 247 255 255;
+                                        text {
+                                                text, "0:00";       /* Text String */
+                                                font, "micro";   /* Only font Vera works!  Use other and segv */
+                                                size, 32;       /* Font Size */
+                                                align, 1.0 1.0;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+                        /***** END LCD AREA *****/
+
+                        /***** START BUTTON AREA *****/
+
+                        /***** start previous button *****/
+                        part {
+                                name, "previous_button";
+                                mouse_events, 1;
+                                type, IMAGE;
+                                description {
+                                        state, "default" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset,  5 37;
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 30 -5;
+                                        }
+                                        image {
+                                                normal, "button-small-normal.png";
+                                        }
+                                }
+                                description {
+                                        state, "clicked" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 5 37;
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 30 -5;
+                                        }
+                                        image {
+                                                normal, "button-small-clicked.png";
+                                        }
+                                }
+                        }
+                        part {
+                                name, "previous_text";
+                                type, TEXT;
+                                mouse_events, 0;                /* Does part accept mouse events? */
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "previous_button";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "previous_button";
+                                        }
+
+
+                                        color, 255 255 255 255;  /* Color of text */
+                                        color2, 0 0 255 255;    /* Does nothing for SOFT_SHADOW */
+                                        color3, 0 0 0 32;      /* Color of shadow */
+
+                                        text {
+                                                text, "Back";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 6;       /* Font Size */
+                                                align,   0.5 0.5;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+                        /***** stop previous button *****/
+                        /***** start play button *****/
+                        part {
+                                name, "play_button";
+                                mouse_events, 1;
+                                type, IMAGE;
+                                description {
+                                        state, "default" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset,  35 37;
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 60 -5;
+                                        }
+                                        image {
+                                                normal, "button-small-normal.png";
+                                        }
+                                }
+                                description {
+                                        state, "clicked" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 35 37;
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 60 -5;
+                                        }
+                                        image {
+                                                normal, "button-small-clicked.png";
+                                        }
+                                }
+                        }
+                        part {
+                                name, "stop_text";
+                                type, TEXT;
+                                mouse_events, 0;                /* Does part accept mouse events? */
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "play_button";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "play_button";
+                                        }
+
+
+                                        color, 255 255 255 255;  /* Color of text */
+                                        color2, 0 0 255 255;    /* Does nothing for SOFT_SHADOW */
+                                        color3, 0 0 0 32;      /* Color of shadow */
+
+                                        text {
+                                                text, "Play";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 6;       /* Font Size */
+                                                align,   0.5 0.5;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+                        /***** stop play button  *****/
+                        /***** start pause button *****/
+                        part {
+                                name, "pause_button";
+                                mouse_events, 1;
+                                type, IMAGE;
+                                description {
+                                        state, "default" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset,  65 37;
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 90 -5;
+                                        }
+                                        image {
+                                                normal, "button-small-normal.png";
+                                        }
+                                }
+                                description {
+                                        state, "clicked" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 65 37;
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 90 -5;
+                                        }
+                                        image {
+                                                normal, "button-small-clicked.png";
+                                        }
+                                }
+                        }
+                        part {
+                                name, "pause_text";
+                                type, TEXT;
+                                mouse_events, 0;                /* Does part accept mouse events? */
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "pause_button";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "pause_button";
+                                        }
+
+
+                                        color, 255 255 255 255;  /* Color of text */
+                                        color2, 0 0 255 255;    /* Does nothing for SOFT_SHADOW */
+                                        color3, 0 0 0 32;      /* Color of shadow */
+
+                                        text {
+                                                text, "Stop";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 6;       /* Font Size */
+                                                align,   0.5 0.5;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+                        /***** stop next button *****/
+                        /***** start next button *****/
+                        part {
+                                name, "next_button";
+                                mouse_events, 1;
+                                type, IMAGE;
+                                description {
+                                        state, "default" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset,  95 37;
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 120 -5;
+                                        }
+                                        image {
+                                                normal, "button-small-normal.png";
+                                        }
+                                }
+                                description {
+                                        state, "clicked" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 95 37;
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 120 -5;
+                                        }
+                                        image {
+                                                normal, "button-small-clicked.png";
+                                        }
+                                }
+                        }
+                        part {
+                                name, "next_text";
+                                type, TEXT;
+                                mouse_events, 0;                /* Does part accept mouse events? */
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "next_button";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "next_button";
+                                        }
+
+
+                                        color, 255 255 255 255;  /* Color of text */
+                                        color2, 0 0 255 255;    /* Does nothing for SOFT_SHADOW */
+                                        color3, 0 0 0 32;      /* Color of shadow */
+
+                                        text {
+                                                text, "Next";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 6;       /* Font Size */
+                                                align,   0.5 0.5;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+                        /***** stop next button *****/
+                        /***** start quit button *****/
+                        part {
+                                name, "quit_button";
+                                mouse_events, 1;
+                                type, IMAGE;
+                                description {
+                                        state, "default" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset,  125 37;
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 150 -5;
+                                        }
+                                        image {
+                                                normal, "button-small-normal.png";
+                                        }
+                                }
+                                description {
+                                        state, "clicked" 0.0;
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 125 37;
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 150 -5;
+                                        }
+                                        image {
+                                                normal, "button-small-clicked.png";
+                                        }
+                                }
+                        }
+                        part {
+                                name, "quit_text";
+                                type, TEXT;
+                                mouse_events, 0;                /* Does part accept mouse events? */
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "quit_button";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "quit_button";
+                                        }
+
+
+                                        color, 255 255 255 255;  /* Color of text */
+                                        color2, 0 0 255 255;    /* Does nothing for SOFT_SHADOW */
+                                        color3, 0 0 0 32;      /* Color of shadow */
+
+                                        text {
+                                                text, "Quit";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 6;       /* Font Size */
+                                                align,   0.5 0.5;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+                        /***** stop exit button *****/
+                        /********** Volume  Controls ***************************************/
+                        part {
+                                name, "vol_label";
+                                mouse_events, 0;
+                                description {
+                                        state,  "default" 0.0;
+                                        min, 21 20;
+                                        max, 21 20;
+
+                                        rel1 {
+                                                relative, 1.0 1.0;
+                                                offset, -115 -50;
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, 0 24;
+                                        }
+
+                                        image {
+                                                normal, "vol-label.png";
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "vol_label_text";
+                                type, TEXT;
+                                mouse_events, 0;                /* Does part accept mouse events? */
+                                description {
+                                        state, "default" 0.0;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "vol_label";
+                                        }
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "vol_label";
+                                        }
+
+
+                                        color, 255 255 255 255;  /* Color of text */
+                                        color2, 0 0 255 255;    /* Does nothing for SOFT_SHADOW */
+                                        color3, 0 0 0 32;        /* Color of shadow */
+
+                                        text {
+                                                text, "VOL";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 5;        /* Font Size */
+                                                align,   0.5 0.6;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "vol_display";
+                                mouse_events, 0;
+                                description {
+                                        state,  "default" 0.0;
+                                        min, 23 20;
+                                        max, 23 20;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, -23 0;
+                                                to, "vol_label";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 0 0;
+                                                to, "vol_label";
+                                        }
+
+                                        image {
+                                                normal, "vol-display.png";
+                                        }
+                                }
+                        }
+                        part {
+                                name, "vol_display_text";
+                                type,   TEXT;
+                                //clip_to, "vol_display";
+                                description {
+                                        state,  "default" 0.0;
+
+                                        /* Use the relative size of the LCD itself, then position with align */
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, 0 0;
+                                                to, "vol_display";
+                                        }
+
+                                        rel2 {
+                                                relative, 1.0 1.0;
+                                                offset, -1 -1;
+                                                to, "vol_display";
+                                        }
+
+
+                                        color,  181 247 255 255;
+                                        text {
+                                                text, "00";       /* Text String */
+                                                font, "Vera";   /* Only font Vera works!  Use other and segv */
+                                                size, 8;       /* Font Size */
+                                                align, 0.5 0.6;       /* Text alignment based on rel1/rel2 */
+                                        }
+                                }
+                        }
+
+                        part {
+                                name, "vol_incr_button";
+                                mouse_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+                                        min, 25 20;
+                                        max, 25 20;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, -25 0;
+                                                to, "vol_display";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 0 0;
+                                                to, "vol_display";
+                                        }
+
+                                        image {
+                                                normal, "vol-plus.png";
+                                        }
+                                }
+                                description {
+                                        state,  "clicked" 0.0;
+                                        min, 25 20;
+                                        max, 25 20;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, -25 0;
+                                                to, "vol_display";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 0 0;
+                                                to, "vol_display";
+                                        }
+
+                                        image {
+                                                normal, "vol-plus-clicked.png";
+                                        }
+                                }
+                        }                        
+
+                       part {
+                                name, "vol_decr_button";
+                                mouse_events, 1;
+                                description {
+                                        state,  "default" 0.0;
+                                        min, 29 20;
+                                        max, 29 20;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, -29 0;
+                                                to, "vol_incr_button";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 0 0;
+                                                to, "vol_incr_button";
+                                        }
+
+                                        image {
+                                                normal, "vol-minus.png";
+                                        }
+                                }
+                                description {
+                                        state,  "clicked" 0.0;
+                                        min, 29 20;
+                                        max, 29 20;
+
+                                        rel1 {
+                                                relative, 0.0 0.0;
+                                                offset, -29 0;
+                                                to, "vol_incr_button";
+                                        }
+                                        rel2 {
+                                                relative, 0.0 1.0;
+                                                offset, 0 0;
+                                                to, "vol_incr_button";
+                                        }
+
+                                        image {
+                                                normal, "vol-minus-clicked.png";
+                                        }
+                                }
+                        }
diff --git a/data/themes/streamline/streamline_small_progs.edc b/data/themes/streamline/streamline_small_progs.edc
new file mode 100644 (file)
index 0000000..706cbdd
--- /dev/null
@@ -0,0 +1,216 @@
+/** Minimize funcationlity by digitalfallout **/
+
+                        /* Previous */
+                        program {
+                                name,       "previous_click";
+                                signal,     "mouse,down,1";
+                                source,     "previous_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "previous_button";
+                        }
+
+                        program {
+                                name,       "previous_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "previous_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "previous_button";
+                        }
+                        program {
+                                name,       "previous_click_emission";
+                                signal,     "mouse,up,1";
+                                source,     "previous_button";
+                                action,     SIGNAL_EMIT "playback.prev" "previous_button";
+                        }
+
+                        /* Play */
+                        program {
+                                name,       "play_click";
+                                signal,     "mouse,down,1";
+                                source,     "play_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "play_button";
+                        }
+
+                        program {
+                                name,       "play_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "play_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "play_button";
+                        }
+                        program {
+                                name,      "play_click_emission";
+                                signal,    "mouse,up,1";
+                                source,    "play_button";
+                                action,    SIGNAL_EMIT "playback.play" "play_button";
+                        }
+
+                        /* Pause */
+                        program {
+                                name,       "pause_click";
+                                signal,     "mouse,down,1";
+                                source,     "pause_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "pause_button";
+                        }
+
+                        program {
+                                name,       "pause_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "pause_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "pause_button";
+                        }
+                        program {
+                                name,      "pause_click_emission";
+                                signal,    "mouse,up,1";
+                                source,    "pause_button";
+                                action,    SIGNAL_EMIT "playback.pause" "pause_button";
+                        }
+                        /* Next */
+                        program {
+                                name,       "next_click";
+                                signal,     "mouse,down,1";
+                                source,     "next_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "next_button";
+                        }
+
+                        program {
+                                name,       "next_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "next_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "next_button";
+                        }
+                        program {
+                                name,       "next_click_emission";
+                                signal,     "mouse,up,1";
+                                source,     "next_button";
+                                action,     SIGNAL_EMIT "playback.next" "next_button";
+                        }
+
+
+                        /* Quit */
+                        program {
+                                name,       "quit_click";
+                                signal,     "mouse,down,1";
+                                source,     "quit_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "quit_button";
+                        }
+
+                        program {
+                                name,       "quit_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "quit_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, DECELERATE 0.25;
+                                target,     "quit_button";
+                        }
+                        program {
+                                name,       "quit_click_emission";
+                                signal,     "mouse,up,1";
+                                source,     "quit_button";
+                                action,     SIGNAL_EMIT "close" "quit";
+                        }
+                        /* Volume Button Proggies */
+                        /* Raise Volume */
+                        program {
+                                name,       "volplus_click";
+                                signal,     "mouse,down,1";
+                                source,     "vol_incr_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "vol_incr_button";
+                        }
+                        program {
+                                name,       "volplus_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "vol_incr_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "vol_incr_button";
+                        }
+
+                        program {
+                                name,       "vol_incr_sig_wheel1";
+                                signal,     "mouse,wheel,0,-1";
+                                source,     "vol_incr_button";
+                                action,     SIGNAL_EMIT "VOL_INCR" "vol_incr_button";
+                        }
+                        program {
+                                name,       "vol_incr_sig_wheel2";
+                                signal,     "mouse,wheel,0,1";
+                                source,     "vol_incr_button";
+                                action,     SIGNAL_EMIT "VOL_DECR" "vol_decr_button";
+                        }
+
+
+                        /** NOTES: All programs MUST have AT LEAST, a NAME, SOURCE (even if "*";), and an ACTION **/
+
+                        program {
+                                name,       "vol_incr_sig";
+                                //signal,           "*";
+                                //source,     "volplus_click";
+                                signal,     "mouse,up,1";
+                                source,     "vol_incr_button";
+                                action,     SIGNAL_EMIT "VOL_INCR" "vol_incr_button";
+                        }
+
+                        /* Lower Volume */
+                        program {
+                                name,       "volminus_click";
+                                signal,     "mouse,down,1";
+                                source,     "vol_decr_button";
+                                action,     STATE_SET "clicked" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "vol_decr_button";
+                        }
+                        program {
+                                name,       "volminus_unclick";
+                                signal,     "mouse,up,1";
+                                source,     "vol_decr_button";
+                                action,     STATE_SET "default" 0.0;
+                                transition, LINEAR 0.0;
+                                target,     "vol_decr_button";
+                        }
+                        program {
+                                name,       "vol_decr_sig";
+                                signal,     "mouse,up,1";
+                                source,     "vol_decr_button";
+                                action,     SIGNAL_EMIT "VOL_DECR" "vol_decr_button";
+                        }
+
+                        program {
+                                name,       "vol_decr_sig_wheel1";
+                                signal,     "mouse,wheel,0,-1";
+                                source,     "vol_decr_button";
+                                action,     SIGNAL_EMIT "VOL_INCR" "vol_incr_button";
+                        }
+
+                        program {
+                                name,       "vol_decr_sig_wheel2";
+                                signal,     "mouse,wheel,0,1";
+                                source,     "vol_decr_button";
+                                action,     SIGNAL_EMIT "VOL_DECR" "vol_decr_button";
+                        }
+
+                        /* switch to "large" mode */
+                        program {
+                                name, "titlebar_dbl_click";
+                                signal, "mouse,down,1,double";
+                                source, "background";
+                                action, SIGNAL_EMIT "SWITCH_GROUP" "euphoria";
+                        }
+
diff --git a/data/themes/winter/groups/collapsed.edc b/data/themes/winter/groups/collapsed.edc
new file mode 100644 (file)
index 0000000..30af652
--- /dev/null
@@ -0,0 +1,296 @@
+  group {
+    name, "collapsed";
+    min, 118 32;
+    max, 9999 32;
+    parts {
+      part {
+        name, "main";
+       mouse_events, 1;
+       repeat_events, 1;
+       description {
+         state, "default" 0.0;
+         min, 110 32;
+         max, 110 32;
+         rel1 {
+           relative, 0 0;
+           offset, 0 0;
+         }
+         rel2 {
+           relative, 0 1;
+           offset, 110 -1;
+         }
+         image {
+             normal, "small-main.png";
+                 border, 10 2 2 2;
+         }
+       }
+      } //part
+      part {
+        name, "left-grad";
+       mouse_events, 0;
+       description {
+         state, "default" 0.0;
+         min, 9 32;
+         max, 9 32;
+          color, WINTER_COLOR;
+         rel1 {
+            to, "main";
+           relative, 0 0;
+           offset, 0 0;
+         }
+         rel2 {
+            to, "main";
+           relative, 0 1;
+           offset, 9 -1;
+         }
+         image {
+             normal, "small-left-grad.png";
+         }
+       }
+      } //part
+      part {
+        name, "right";
+       mouse_events, 1;
+       repeat_events, 1;
+       description {
+         state, "default" 0.0;
+         min, 9 32;
+         max, 9 32;
+         rel1 {
+           relative, 1 0;
+           offset, -9 0;
+         }
+         rel2 {
+           relative, 1 1;
+           offset, -1 -1;
+         }
+         image {
+             normal, "small-right.png";
+         }
+       }
+      } //part
+      part {
+        name, "right-grad";
+       mouse_events, 0;
+       description {
+         state, "default" 0.0;
+         min, 9 32;
+         max, 9 32;
+          color, WINTER_COLOR;
+         rel1 {
+            to, "right";
+           relative, 0 0;
+           offset, 0 0;
+         }
+         rel2 {
+            to, "right";
+           relative, 1 1;
+           offset, -1 -1;
+         }
+         image {
+             normal, "small-right-grad.png";
+         }
+       }
+      } //part
+      part {
+        name, "panel";
+       mouse_events, 1;
+       repeat_events, 1;
+       description {
+         state, "default" 0.0;
+         min, 0 30;
+         max, 9999 30;
+         rel1 {
+            to, "main";
+           relative, 1 0;
+           offset, 0 1;
+         }
+         rel2 {
+            to, "right";
+           relative, 0 1;
+           offset, -1 -2;
+         }
+         image {
+             normal, "small-panel.png";
+                 border, 10 2 2 2;
+         }
+       }
+      } //part
+
+    BUTTON("prev", "small-prev1.png", "small-prev2.png", 16, 14,
+           "main", 0 1, 31 -17,
+           "main", 0 1, 47 -3);
+    BUTTON("rew", "small-rew1.png", "small-rew2.png", 11, 14,
+           "main", 0 1, 45 -17,
+           "main", 0 1, 56 -3);
+    TOGGLE_BUTTON("play", "small-play1.png", "small-play2.png",
+           "small-pause1.png", "small-pause2.png", 13, 13,
+           "main", 0 1, 55 -17,
+           "main", 0 1, 68 -4);
+    BUTTON("ff", "small-ff1.png", "small-ff2.png", 11, 14,
+           "main", 0 1, 66 -17,
+           "main", 0 1, 77 -3);
+    BUTTON("next", "small-next1.png", "small-next2.png", 16, 14,
+           "main", 0 1, 75 -17,
+           "main", 0 1, 91 -3);
+
+      part {
+        name, "seekerTrough";
+       mouse_events, 0;
+       description {
+         state, "default" 0.0;
+         min, 17 4;
+         max, 9999 4;
+         rel1 {
+            to, "main";
+           relative, 0 0;
+           offset, 18 7;
+         }
+         rel2 {
+            to, "main";
+           relative, 1 0;
+           offset, -9 11;
+         }
+         image {
+             normal, "small-seeker-trough.png";
+                 border, 3 3 2 2;
+         }
+       }
+      } //part
+
+      part {
+        name, "seekerBar";
+       mouse_events, 0;
+       description {
+         state, "default" 0.0;
+         min, 0 2;
+         max, 9999 2;
+         color, WINTER_COLOR;
+         rel1 {
+            to, "seekerTrough";
+           relative, 0 0;
+           offset, 1 1;
+         }
+         rel2 {
+            to_x, "seeker";
+            to_y, "seekerTrough";
+           relative, 0 1;
+           offset, 0 -2;
+         }
+         image {
+             normal, "small-seeker-bar.png";
+                 border, 3 3 2 2;
+         }
+       }
+      } //part
+
+      part {
+        name, "seeker";
+        type, RECT;
+       mouse_events, 0;
+        dragable {
+          x, 1 1 1;
+          y, 0 0 0;
+          confine, "seekerTrough";
+        }
+       description {
+         state, "default" 0.0;
+          visible, 0;
+         min, 1 4;
+         max, 1 4;
+         rel1 {
+            to, "seekerTrough";
+           relative, 0 0;
+           offset, 0 0;
+         }
+         rel2 {
+            to, "seekerTrough";
+           relative, 1 1;
+           offset, -1 -1;
+         }
+       }
+      } //part
+
+      part {
+        name, "seeker_grabber";
+        type, RECT;
+        mouse_events, 1;
+        description {
+          state, "default" 0.0;
+          visible, 1;
+          color, 0 0 0 0;
+          rel1 {
+            to, "seekerTrough";
+            relative, 0 0;
+            offset, -2 -2;
+          }
+          rel2 {
+            to, "seekerTrough";
+            relative, 1 1;
+            offset,  1 1;
+          }
+        }
+      } //part
+
+    } //parts 
+
+    programs {
+      BUTTON_PROG("prev", "playback.prev")
+      BUTTON_PROG3("rew", "SEEK_BACK_START", "SEEK_BACK_STOP")
+      TOGGLE_BUTTON_PROG("play", "playback.play", "playback.pause")
+      BUTTON_PROG3("ff", "SEEK_FORWARD_START", "SEEK_FORWARD_STOP")
+      BUTTON_PROG("next", "playback.next")
+
+      program {
+        name, "switch";
+        signal, "mouse,down,1,double";
+        source, "main";
+        action, SIGNAL_EMIT "SWITCH_GROUP" "euphoria";
+      }
+      program {
+        name, "seeker-start";
+       signal, "mouse,down,1";
+       source, "seeker_grabber";
+       action, SIGNAL_EMIT "SEEKER_START" "";
+      }
+      program {
+        name, "seeker-update";
+       signal, "mouse,move";
+       source, "seeker_grabber";
+       action, SIGNAL_EMIT "SEEKER_UPDATE" "";
+      }
+      program {
+        name, "seeker-stop";
+       signal, "mouse,up,1";
+       source, "seeker_grabber";
+       action, SIGNAL_EMIT "SEEKER_STOP" "";
+      }
+      program {
+        name, "toggle-playing";
+        signal, "PLAYBACK_STATE_PLAYING";
+        source, "*";
+        action, STATE_SET "toggled" 0.0; 
+        transition, LINEAR 0.0; 
+        target, "play"; 
+        target, "play-2"; 
+      }
+      program {
+        name, "toggle-stopped";
+        signal, "PLAYBACK_STATE_STOPPED";
+        source, "*";
+        action, STATE_SET "default" 0.0; 
+        transition, LINEAR 0.0; 
+        target, "play"; 
+        target, "play-2"; 
+      }
+      program {
+        name, "toggle-paused";
+        signal, "PLAYBACK_STATE_PAUSED";
+        source, "*";
+        action, STATE_SET "default" 0.0; 
+        transition, LINEAR 0.0; 
+        target, "play"; 
+        target, "play-2"; 
+      }
+    } //programs
+  } //group
diff --git a/data/themes/winter/groups/euphoria.edc b/data/themes/winter/groups/euphoria.edc
new file mode 100644 (file)
index 0000000..3a03583
--- /dev/null
@@ -0,0 +1,54 @@
+    group {
+        name, "euphoria";
+       min, 200 300;
+       max, 99999 99999;
+
+       data {
+               item, "shaped" "hell yeah";
+       }
+
+       script {
+               public message (Msg_Type:type, id, ...)
+               {
+                       switch (id) {
+                               case MSG_ID_SET_SONGNAME: {
+                                       new buf[128];
+
+                                       if (type != MSG_STRING_SET || numargs () < 5)
+                                               return;
+
+                                       getsarg (2, buf, 128);
+                                       set_text (PART:"artist_name", buf);
+
+                                       getsarg (3, buf, 128);
+                                       set_text (PART:"song_name", buf);
+
+                                       getsarg (4, buf, 128);
+                                       set_text (PART:"album_name", buf);
+                               }
+                       }
+               }
+       }
+
+       parts {
+#include "../parts/main.edc"
+#include "../parts/playlist.edc"
+#include "../parts/buttons.edc"
+#include "../parts/volume.edc"
+#include "../parts/text.edc"
+#include "../parts/seeker.edc"
+#include "../parts/ani.edc"
+       
+       } //parts
+
+       programs {
+#include "../programs/buttons.edc"
+#include "../programs/volume.edc"
+#include "../programs/playlist.edc"
+#include "../programs/seeker.edc"
+#include "../programs/text.edc"
+#include "../programs/ani.edc"
+#include "../programs/switch.edc"
+       } //programs
+       
+    } //group
diff --git a/data/themes/winter/groups/playlist_item.edc b/data/themes/winter/groups/playlist_item.edc
new file mode 100644 (file)
index 0000000..b2c36b1
--- /dev/null
@@ -0,0 +1,152 @@
+    group {
+        name, "playlist_item";
+       min, 50 15;
+       max, 9999 15;
+       parts {
+            part {
+              name, "bg";
+              type, RECT;
+              mouse_events, 1;
+
+              description {
+                state, "default" 0.0;
+                color, 0 0 0 0;
+              }
+            }
+           part {
+               name, "title";
+               type, TEXT;
+               mouse_events, 1;
+               description {
+                   state, "default" 0.0;
+                   color, 0 0 0 128;
+                   rel1 {
+                       relative, 0.0 0.0;
+                       offset, 5 0;
+                   }
+                   rel2 {
+                       to_x, "duration";
+                       relative, 0.0 1.0;
+                       offset, -5 0;
+                   }
+                   text {
+                       text, "title";
+                       font, "Vera";
+                       size, 12;
+                       align, 0.0 0.0;
+                   }
+               }
+               description {
+                   state, "selected" 0.0;
+                   color, 0 0 0 255;
+                   rel1 {
+                       relative, 0.0 0.0;
+                       offset, 5 0;
+                   }
+                   rel2 {
+                       to_x, "duration";
+                       relative, 0.0 1.0;
+                       offset, -5 0;
+                   }
+                   text {
+                       text, "title";
+                       font, "Vera";
+                       size, 12;
+                       align, 0.0 0.0;
+                   }
+               }
+           } //part
+           part {
+               name, "duration";
+               type, TEXT;
+               mouse_events, 1;
+               description {
+                   state, "default" 0.0;
+                   color, 0 0 0 128;
+                   rel1 {
+                       relative, 1.0 0.0;
+                       offset, -30 0;
+                   }
+                   rel2 {
+                       relative, 1.0 1.0;
+                       offset, -5 -1;
+                   }
+                   text {
+                       text, "00:00";
+                       font, "Vera";
+                       size, 12;
+                       min, 1 1;
+                       align, 1.0 0.0;
+                   }
+               }
+               description {
+                   state, "selected" 0.0;
+                   color, 0 0 0 255;
+                   rel1 {
+                       relative, 1.0 0.0;
+                       offset, -30 0;
+                   }
+                   rel2 {
+                       relative, 1.0 1.0;
+                       offset, -5 -1;
+                   }
+                   text {
+                       text, "00:00";
+                       font, "Vera";
+                       size, 12;
+                       min, 1 1;
+                       align, 1.0 0.0;
+                   }
+               }
+           } //part
+       
+       } //parts
+
+       programs {
+           
+           program {
+               name, "selected_mouse";
+               signal, "mouse,clicked,1";
+               source, "*";
+               action, SIGNAL_EMIT "PLAYLIST_ITEM_SELECTED" "";
+           } 
+           program {
+               name, "selected";
+               signal, "PLAYLIST_ITEM_SELECTED";
+               source, "";
+               action, STATE_SET "selected" 0.0;
+               transition, DECELERATE 0.5;
+               target, "title";
+               target, "duration";
+           } 
+           program {
+               name, "unselected";
+               signal, "PLAYLIST_ITEM_UNSELECTED";
+               source, "";
+               action, STATE_SET "default" 0.0;
+               transition, DECELERATE 0.5;
+               target, "title";
+               target, "duration";
+           } 
+           program {
+               name, "play_it";
+               signal, "mouse,down,1,double";
+               source, "*";
+               action, SIGNAL_EMIT "PLAYLIST_ITEM_PLAY" "";
+           } 
+           program {
+               name, "scroll_up";
+               signal, "mouse,wheel,0,-1";
+               source, "*";
+               action, SIGNAL_EMIT "PLAYLIST_SCROLL_UP" "";
+           } 
+           program {
+               name, "scroll_down";
+               signal, "mouse,wheel,0,1";
+               source, "*";
+               action, SIGNAL_EMIT "PLAYLIST_SCROLL_DOWN" "";
+           } 
+       
+       } //programs
+       
+    } //group
diff --git a/data/themes/winter/images/collapsed.edc b/data/themes/winter/images/collapsed.edc
new file mode 100644 (file)
index 0000000..3f77092
--- /dev/null
@@ -0,0 +1,21 @@
+  image, "small-main.png" LOSSY 98;
+  image, "small-right.png" LOSSY 98;
+  image, "small-panel.png" LOSSY 98;
+  image, "small-left-grad.png" LOSSY 98;
+  image, "small-right-grad.png" LOSSY 98;
+
+  image, "small-seeker-bar.png" LOSSY 98;
+  image, "small-seeker-trough.png" LOSSY 98;
+
+  image, "small-prev1.png" LOSSY 98;
+  image, "small-prev2.png" LOSSY 98;
+  image, "small-rew1.png" LOSSY 98;
+  image, "small-rew2.png" LOSSY 98;
+  image, "small-play1.png" LOSSY 98;
+  image, "small-play2.png" LOSSY 98;
+  image, "small-pause1.png" LOSSY 98;
+  image, "small-pause2.png" LOSSY 98;
+  image, "small-ff1.png" LOSSY 98;
+  image, "small-ff2.png" LOSSY 98;
+  image, "small-next1.png" LOSSY 98;
+  image, "small-next2.png" LOSSY 98;
diff --git a/data/themes/winter/images/euphoria.edc b/data/themes/winter/images/euphoria.edc
new file mode 100644 (file)
index 0000000..d88345d
--- /dev/null
@@ -0,0 +1,46 @@
+    image, "main.png" LOSSY 98;
+    image, "screen.png" LOSSY 98;
+    image, "bot.png" LOSSY 98;
+    image, "bot_grad.png" LOSSY 98;
+    image, "top_grad.png" LOSSY 98;
+    image, "shad.png" LOSSY 98;
+    image, "panel.png" LOSSY 98;
+    image, "prev1.png" LOSSY 98;
+    image, "prev2.png" LOSSY 98;
+    image, "rew1.png" LOSSY 98;
+    image, "rew2.png" LOSSY 98;
+    image, "play1.png" LOSSY 98;
+    image, "play2.png" LOSSY 98;
+    image, "pause1.png" LOSSY 98;
+    image, "pause2.png" LOSSY 98;
+    image, "ff1.png" LOSSY 98;
+    image, "ff2.png" LOSSY 98;
+    image, "next1.png" LOSSY 98;
+    image, "next2.png" LOSSY 98;
+    image, "pl1.png" LOSSY 98;
+    image, "pl2.png" LOSSY 98;
+    image, "x1.png" LOSSY 98;
+    image, "x2.png" LOSSY 98;
+
+    image, "volume.png" LOSSY 98;
+    image, "vol-dn.png" LOSSY 98;
+    image, "vol-dn-over.png" LOSSY 98;
+    image, "vol-dn-clicked.png" LOSSY 98;
+    image, "vol-dn-border.png" LOSSY 98;
+    image, "vol-up.png" LOSSY 98;
+    image, "vol-up-over.png" LOSSY 98;
+    image, "vol-up-clicked.png" LOSSY 98;
+    image, "vol-up-border.png" LOSSY 98;
+
+    image, "plus1.png" LOSSY 98;
+    image, "plus2.png" LOSSY 98;
+    image, "minus1.png" LOSSY 98;
+    image, "minus2.png" LOSSY 98;
+    image, "edit1.png" LOSSY 98;
+    image, "edit2.png" LOSSY 98;
+
+    image, "seeker_trough.png" LOSSY 98;
+    image, "seeker_bar.png" LOSSY 98;
+    image, "seeker_bar_grad.png" LOSSY 98;
+
+    image, "dot.png" LOSSY 98;
diff --git a/data/themes/winter/img/bot.png b/data/themes/winter/img/bot.png
new file mode 100644 (file)
index 0000000..69d35e7
Binary files /dev/null and b/data/themes/winter/img/bot.png differ
diff --git a/data/themes/winter/img/bot_grad.png b/data/themes/winter/img/bot_grad.png
new file mode 100644 (file)
index 0000000..47558b2
Binary files /dev/null and b/data/themes/winter/img/bot_grad.png differ
diff --git a/data/themes/winter/img/dot.png b/data/themes/winter/img/dot.png
new file mode 100644 (file)
index 0000000..eb35304
Binary files /dev/null and b/data/themes/winter/img/dot.png differ
diff --git a/data/themes/winter/img/edit1.png b/data/themes/winter/img/edit1.png
new file mode 100644 (file)
index 0000000..26079b3
Binary files /dev/null and b/data/themes/winter/img/edit1.png differ
diff --git a/data/themes/winter/img/edit2.png b/data/themes/winter/img/edit2.png
new file mode 100644 (file)
index 0000000..eac241e
Binary files /dev/null and b/data/themes/winter/img/edit2.png differ
diff --git a/data/themes/winter/img/ff1.png b/data/themes/winter/img/ff1.png
new file mode 100644 (file)
index 0000000..d677ab4
Binary files /dev/null and b/data/themes/winter/img/ff1.png differ
diff --git a/data/themes/winter/img/ff2.png b/data/themes/winter/img/ff2.png
new file mode 100644 (file)
index 0000000..83b3c9d
Binary files /dev/null and b/data/themes/winter/img/ff2.png differ
diff --git a/data/themes/winter/img/main.png b/data/themes/winter/img/main.png
new file mode 100644 (file)
index 0000000..fe7048e
Binary files /dev/null and b/data/themes/winter/img/main.png differ
diff --git a/data/themes/winter/img/minus1.png b/data/themes/winter/img/minus1.png
new file mode 100644 (file)
index 0000000..33ecf7c
Binary files /dev/null and b/data/themes/winter/img/minus1.png differ
diff --git a/data/themes/winter/img/minus2.png b/data/themes/winter/img/minus2.png
new file mode 100644 (file)
index 0000000..ee0ea9d
Binary files /dev/null and b/data/themes/winter/img/minus2.png differ
diff --git a/data/themes/winter/img/next1.png b/data/themes/winter/img/next1.png
new file mode 100644 (file)
index 0000000..2cafded
Binary files /dev/null and b/data/themes/winter/img/next1.png differ
diff --git a/data/themes/winter/img/next2.png b/data/themes/winter/img/next2.png
new file mode 100644 (file)
index 0000000..b685f3d
Binary files /dev/null and b/data/themes/winter/img/next2.png differ
diff --git a/data/themes/winter/img/panel.png b/data/themes/winter/img/panel.png
new file mode 100644 (file)
index 0000000..6f21811
Binary files /dev/null and b/data/themes/winter/img/panel.png differ
diff --git a/data/themes/winter/img/pause1.png b/data/themes/winter/img/pause1.png
new file mode 100644 (file)
index 0000000..ced7813
Binary files /dev/null and b/data/themes/winter/img/pause1.png differ
diff --git a/data/themes/winter/img/pause2.png b/data/themes/winter/img/pause2.png
new file mode 100644 (file)
index 0000000..8538fe4
Binary files /dev/null and b/data/themes/winter/img/pause2.png differ
diff --git a/data/themes/winter/img/pl1.png b/data/themes/winter/img/pl1.png
new file mode 100644 (file)
index 0000000..3a7b17f
Binary files /dev/null and b/data/themes/winter/img/pl1.png differ
diff --git a/data/themes/winter/img/pl2.png b/data/themes/winter/img/pl2.png
new file mode 100644 (file)
index 0000000..e538293
Binary files /dev/null and b/data/themes/winter/img/pl2.png differ
diff --git a/data/themes/winter/img/play1.png b/data/themes/winter/img/play1.png
new file mode 100644 (file)
index 0000000..abcc7f6
Binary files /dev/null and b/data/themes/winter/img/play1.png differ
diff --git a/data/themes/winter/img/play2.png b/data/themes/winter/img/play2.png
new file mode 100644 (file)
index 0000000..8a8bbd8
Binary files /dev/null and b/data/themes/winter/img/play2.png differ
diff --git a/data/themes/winter/img/plus1.png b/data/themes/winter/img/plus1.png
new file mode 100644 (file)
index 0000000..631a424
Binary files /dev/null and b/data/themes/winter/img/plus1.png differ
diff --git a/data/themes/winter/img/plus2.png b/data/themes/winter/img/plus2.png
new file mode 100644 (file)
index 0000000..c8f6190
Binary files /dev/null and b/data/themes/winter/img/plus2.png differ
diff --git a/data/themes/winter/img/prev1.png b/data/themes/winter/img/prev1.png
new file mode 100644 (file)
index 0000000..932883c
Binary files /dev/null and b/data/themes/winter/img/prev1.png differ
diff --git a/data/themes/winter/img/prev2.png b/data/themes/winter/img/prev2.png
new file mode 100644 (file)
index 0000000..e48de26
Binary files /dev/null and b/data/themes/winter/img/prev2.png differ
diff --git a/data/themes/winter/img/rew1.png b/data/themes/winter/img/rew1.png
new file mode 100644 (file)
index 0000000..3f59c6c
Binary files /dev/null and b/data/themes/winter/img/rew1.png differ
diff --git a/data/themes/winter/img/rew2.png b/data/themes/winter/img/rew2.png
new file mode 100644 (file)
index 0000000..69ed157
Binary files /dev/null and b/data/themes/winter/img/rew2.png differ
diff --git a/data/themes/winter/img/screen.png b/data/themes/winter/img/screen.png
new file mode 100644 (file)
index 0000000..bdf3443
Binary files /dev/null and b/data/themes/winter/img/screen.png differ
diff --git a/data/themes/winter/img/seeker_bar.png b/data/themes/winter/img/seeker_bar.png
new file mode 100644 (file)
index 0000000..38908a9
Binary files /dev/null and b/data/themes/winter/img/seeker_bar.png differ
diff --git a/data/themes/winter/img/seeker_bar_grad.png b/data/themes/winter/img/seeker_bar_grad.png
new file mode 100644 (file)
index 0000000..a7d04db
Binary files /dev/null and b/data/themes/winter/img/seeker_bar_grad.png differ
diff --git a/data/themes/winter/img/seeker_trough.png b/data/themes/winter/img/seeker_trough.png
new file mode 100644 (file)
index 0000000..a366f5e
Binary files /dev/null and b/data/themes/winter/img/seeker_trough.png differ
diff --git a/data/themes/winter/img/shad.png b/data/themes/winter/img/shad.png
new file mode 100644 (file)
index 0000000..7283a13
Binary files /dev/null and b/data/themes/winter/img/shad.png differ
diff --git a/data/themes/winter/img/small-ff1.png b/data/themes/winter/img/small-ff1.png
new file mode 100644 (file)
index 0000000..4f78ac4
Binary files /dev/null and b/data/themes/winter/img/small-ff1.png differ
diff --git a/data/themes/winter/img/small-ff2.png b/data/themes/winter/img/small-ff2.png
new file mode 100644 (file)
index 0000000..b5800ab
Binary files /dev/null and b/data/themes/winter/img/small-ff2.png differ
diff --git a/data/themes/winter/img/small-left-grad.png b/data/themes/winter/img/small-left-grad.png
new file mode 100644 (file)
index 0000000..2209bc5
Binary files /dev/null and b/data/themes/winter/img/small-left-grad.png differ
diff --git a/data/themes/winter/img/small-main.png b/data/themes/winter/img/small-main.png
new file mode 100644 (file)
index 0000000..9e6deae
Binary files /dev/null and b/data/themes/winter/img/small-main.png differ
diff --git a/data/themes/winter/img/small-next1.png b/data/themes/winter/img/small-next1.png
new file mode 100644 (file)
index 0000000..5663b15
Binary files /dev/null and b/data/themes/winter/img/small-next1.png differ
diff --git a/data/themes/winter/img/small-next2.png b/data/themes/winter/img/small-next2.png
new file mode 100644 (file)
index 0000000..59b1819
Binary files /dev/null and b/data/themes/winter/img/small-next2.png differ
diff --git a/data/themes/winter/img/small-panel.png b/data/themes/winter/img/small-panel.png
new file mode 100644 (file)
index 0000000..f80ded3
Binary files /dev/null and b/data/themes/winter/img/small-panel.png differ
diff --git a/data/themes/winter/img/small-pause1.png b/data/themes/winter/img/small-pause1.png
new file mode 100644 (file)
index 0000000..f822927
Binary files /dev/null and b/data/themes/winter/img/small-pause1.png differ
diff --git a/data/themes/winter/img/small-pause2.png b/data/themes/winter/img/small-pause2.png
new file mode 100644 (file)
index 0000000..953dfed
Binary files /dev/null and b/data/themes/winter/img/small-pause2.png differ
diff --git a/data/themes/winter/img/small-play1.png b/data/themes/winter/img/small-play1.png
new file mode 100644 (file)
index 0000000..0fdf71b
Binary files /dev/null and b/data/themes/winter/img/small-play1.png differ
diff --git a/data/themes/winter/img/small-play2.png b/data/themes/winter/img/small-play2.png
new file mode 100644 (file)
index 0000000..5b281bc
Binary files /dev/null and b/data/themes/winter/img/small-play2.png differ
diff --git a/data/themes/winter/img/small-prev1.png b/data/themes/winter/img/small-prev1.png
new file mode 100644 (file)
index 0000000..8302562
Binary files /dev/null and b/data/themes/winter/img/small-prev1.png differ
diff --git a/data/themes/winter/img/small-prev2.png b/data/themes/winter/img/small-prev2.png
new file mode 100644 (file)
index 0000000..43f507d
Binary files /dev/null and b/data/themes/winter/img/small-prev2.png differ
diff --git a/data/themes/winter/img/small-rew1.png b/data/themes/winter/img/small-rew1.png
new file mode 100644 (file)
index 0000000..d619f84
Binary files /dev/null and b/data/themes/winter/img/small-rew1.png differ
diff --git a/data/themes/winter/img/small-rew2.png b/data/themes/winter/img/small-rew2.png
new file mode 100644 (file)
index 0000000..ecd7449
Binary files /dev/null and b/data/themes/winter/img/small-rew2.png differ
diff --git a/data/themes/winter/img/small-right-grad.png b/data/themes/winter/img/small-right-grad.png
new file mode 100644 (file)
index 0000000..28af345
Binary files /dev/null and b/data/themes/winter/img/small-right-grad.png differ
diff --git a/data/themes/winter/img/small-right.png b/data/themes/winter/img/small-right.png
new file mode 100644 (file)
index 0000000..77939a4
Binary files /dev/null and b/data/themes/winter/img/small-right.png differ
diff --git a/data/themes/winter/img/small-seeker-bar.png b/data/themes/winter/img/small-seeker-bar.png
new file mode 100644 (file)
index 0000000..c5c7e3a
Binary files /dev/null and b/data/themes/winter/img/small-seeker-bar.png differ
diff --git a/data/themes/winter/img/small-seeker-trough.png b/data/themes/winter/img/small-seeker-trough.png
new file mode 100644 (file)
index 0000000..e55648e
Binary files /dev/null and b/data/themes/winter/img/small-seeker-trough.png differ
diff --git a/data/themes/winter/img/top_grad.png b/data/themes/winter/img/top_grad.png
new file mode 100644 (file)
index 0000000..6e0c7b1
Binary files /dev/null and b/data/themes/winter/img/top_grad.png differ
diff --git a/data/themes/winter/img/vol-dn-border.png b/data/themes/winter/img/vol-dn-border.png
new file mode 100644 (file)
index 0000000..608f127
Binary files /dev/null and b/data/themes/winter/img/vol-dn-border.png differ
diff --git a/data/themes/winter/img/vol-dn-clicked.png b/data/themes/winter/img/vol-dn-clicked.png
new file mode 100644 (file)
index 0000000..b006ad7
Binary files /dev/null and b/data/themes/winter/img/vol-dn-clicked.png differ
diff --git a/data/themes/winter/img/vol-dn-over.png b/data/themes/winter/img/vol-dn-over.png
new file mode 100644 (file)
index 0000000..c083454
Binary files /dev/null and b/data/themes/winter/img/vol-dn-over.png differ
diff --git a/data/themes/winter/img/vol-dn.png b/data/themes/winter/img/vol-dn.png
new file mode 100644 (file)
index 0000000..411eb06
Binary files /dev/null and b/data/themes/winter/img/vol-dn.png differ
diff --git a/data/themes/winter/img/vol-up-border.png b/data/themes/winter/img/vol-up-border.png
new file mode 100644 (file)
index 0000000..ab7eb63
Binary files /dev/null and b/data/themes/winter/img/vol-up-border.png differ
diff --git a/data/themes/winter/img/vol-up-clicked.png b/data/themes/winter/img/vol-up-clicked.png
new file mode 100644 (file)
index 0000000..bf7268d
Binary files /dev/null and b/data/themes/winter/img/vol-up-clicked.png differ
diff --git a/data/themes/winter/img/vol-up-over.png b/data/themes/winter/img/vol-up-over.png
new file mode 100644 (file)
index 0000000..e62a2f1
Binary files /dev/null and b/data/themes/winter/img/vol-up-over.png differ
diff --git a/data/themes/winter/img/vol-up.png b/data/themes/winter/img/vol-up.png
new file mode 100644 (file)
index 0000000..ce3625c
Binary files /dev/null and b/data/themes/winter/img/vol-up.png differ
diff --git a/data/themes/winter/img/volume.png b/data/themes/winter/img/volume.png
new file mode 100644 (file)
index 0000000..936f3ae
Binary files /dev/null and b/data/themes/winter/img/volume.png differ
diff --git a/data/themes/winter/img/x1.png b/data/themes/winter/img/x1.png
new file mode 100644 (file)
index 0000000..4ca81a9
Binary files /dev/null and b/data/themes/winter/img/x1.png differ
diff --git a/data/themes/winter/img/x2.png b/data/themes/winter/img/x2.png
new file mode 100644 (file)
index 0000000..e55d1bc
Binary files /dev/null and b/data/themes/winter/img/x2.png differ
diff --git a/data/themes/winter/macros/macros.inc b/data/themes/winter/macros/macros.inc
new file mode 100644 (file)
index 0000000..e9f4c2d
--- /dev/null
@@ -0,0 +1,638 @@
+/* yeah. i know. this file is messy right now. still playing with things... */
+
+#define BUTTON(NAME, IMG, IMG2, W, H, REL1_TO, REL1_REL, REL1_OFF, REL2_TO, REL2_REL, REL2_OFF) \
+      part {                           \
+        name, NAME;                    \
+       description {                   \
+         state, "default" 0.0;         \
+         min, W H;                     \
+         max, W H;                     \
+         color, 255 255 255 127;       \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG;                \
+         }                             \
+       }                               \
+       description {                   \
+         state, "over" 0.0;            \
+         min, W H;                     \
+         max, W H;                     \
+         color, 255 255 255 255;       \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG;                \
+         }                             \
+       }                               \
+       description {                   \
+         state, "down" 0.0;            \
+         min, W H;                     \
+         max, W H;                     \
+         color, 255 255 255 255;       \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG2;               \
+         }                             \
+       }                               \
+      }                                        
+
+
+#define BUTTON_PROG(NAME, SIG)         \
+      program {                                \
+        name, NAME"-in";               \
+        signal, "mouse,in";            \
+        source, NAME;                  \
+        action, STATE_SET "over" 0.0;  \
+        transition, DECELERATE 0.5;    \
+        target, NAME;                  \
+      }                                        \
+      program {                                \
+        name, NAME"-out";              \
+        signal, "mouse,out";           \
+        source, NAME;                  \
+        action, STATE_SET "default" 0.0;\
+        transition, DECELERATE 0.5;    \
+        target, NAME;                  \
+      }                                        \
+      program {                                \
+       name, NAME"-clicked";           \
+       signal, "mouse,clicked,1";              \
+       source, NAME;                   \
+       action, SIGNAL_EMIT SIG NAME;   \
+      }                                        \
+      program {                                \
+        name, NAME"-down2";            \
+       signal, "mouse,down,1";         \
+       source, NAME;                   \
+       action, STATE_SET "down" 0.0;   \
+        transition, LINEAR 0.0;        \
+       target, NAME;                   \
+      }                                        \
+      program {                                \
+        name, NAME"-up";               \
+       signal, "mouse,up,1";           \
+       source, NAME;                   \
+       action, STATE_SET "over" 0.0;   \
+        transition, LINEAR 0.0;        \
+       target, NAME;                   \
+      }                                        \
+
+
+
+
+#define BUTTON2(NAME, IMG, IMG2, IMG3, W, H, REL1_TO, REL1_REL, REL1_OFF, REL2_TO, REL2_REL, REL2_OFF) \
+      part {                           \
+        name, NAME;                    \
+       description {                   \
+         state, "default" 0.0;         \
+         min, W H;                     \
+         max, W H;                     \
+         color, 255 255 255 255;       \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG;                \
+         }                             \
+       }                               \
+       description {                   \
+         state, "over" 0.0;            \
+         min, W H;                     \
+         max, W H;                     \
+         color, WINTER_COLOR;  \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG;                \
+         }                             \
+       }                               \
+       description {                   \
+         state, "down" 0.0;            \
+         min, W H;                     \
+         max, W H;                     \
+         color, WINTER_COLOR;  \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG2;               \
+         }                             \
+       }                               \
+      }                                        \
+      part {                           \
+        name, NAME"-border";           \
+        mouse_events, 0;                \
+       description {                   \
+         state, "default" 0.0;         \
+         min, W H;                     \
+         max, W H;                     \
+         color, 255 255 255 255;       \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG3;               \
+         }                             \
+       }                               \
+      }         
+
+
+
+
+
+
+
+
+#define BUTTON_PROG2(NAME, P1, P2, P3, P4, P5, SIG) \
+      program {                                \
+        name, P1;                      \
+        signal, "mouse,in";            \
+        source, NAME;                  \
+        action, STATE_SET "over" 0.0;  \
+        transition, DECELERATE 0.25;   \
+        target, NAME;                  \
+      }                                        \
+      program {                                \
+        name, P2;                      \
+        signal, "mouse,out";           \
+        source, NAME;                  \
+        action, STATE_SET "default" 0.0;\
+        transition, DECELERATE 0.25;   \
+        target, NAME;                  \
+      }                                        \
+      program {                                \
+        name, P3;                      \
+       signal, "mouse,up,1";           \
+       source, NAME;                   \
+       action, SIGNAL_EMIT SIG NAME;   \
+      }                                        \
+      program {                                \
+        name, P4;                      \
+       signal, "mouse,down,1";         \
+       source, NAME;                   \
+       action, STATE_SET "down" 0.0;   \
+        transition, LINEAR 0.0;        \
+       target, NAME;                   \
+      }                                        \
+      program {                                \
+        name, P5;                      \
+       signal, "mouse,up,1";           \
+       source, NAME;                   \
+       action, STATE_SET "over" 0.0;   \
+        transition, LINEAR 0.0;        \
+       target, NAME;                   \
+      }                                        \
+
+
+
+#define BUTTON_CLIPPED(NAME, IMG, IMG2, W, H, REL1_TO, REL1_REL, REL1_OFF, REL2_TO, REL2_REL, REL2_OFF, CLIP)\
+      part {                           \
+        name, NAME;                    \
+       clip_to, CLIP;                  \
+       description {                   \
+         state, "default" 0.0;         \
+         min, W H;                     \
+         max, W H;                     \
+         color, 255 255 255 127;       \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG;                \
+         }                             \
+       }                               \
+       description {                   \
+         state, "over" 0.0;            \
+         min, W H;                     \
+         max, W H;                     \
+         color, 255 255 255 255;       \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG;                \
+         }                             \
+       }                               \
+       description {                   \
+         state, "down" 0.0;            \
+         min, W H;                     \
+         max, W H;                     \
+         color, 255 255 255 255;       \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG2;               \
+         }                             \
+       }                               \
+      }                                        
+
+
+
+#define BUTTON_PROG3(NAME, SIG_DN, SIG_UP)\
+      program {                                \
+        name, NAME"-in";               \
+        signal, "mouse,in";            \
+        source, NAME;                  \
+        action, STATE_SET "over" 0.0;  \
+        transition, DECELERATE 0.5;    \
+        target, NAME;                  \
+      }                                        \
+      program {                                \
+        name, NAME"-out";              \
+        signal, "mouse,out";           \
+        source, NAME;                  \
+        action, STATE_SET "default" 0.0;\
+        transition, DECELERATE 0.5;    \
+        target, NAME;                  \
+      }                                        \
+      program {                                \
+        name, NAME"-down1";            \
+       signal, "mouse,down,1";         \
+       source, NAME;                   \
+       action, SIGNAL_EMIT SIG_DN NAME;        \
+      }                                        \
+      program {                                \
+        name, NAME"-down2";            \
+       signal, "mouse,down,1";         \
+       source, NAME;                   \
+       action, STATE_SET "down" 0.0;   \
+        transition, LINEAR 0.0;        \
+       target, NAME;                   \
+      }                                        \
+      program {                                \
+        name, NAME"-up1";              \
+       signal, "mouse,up,1";           \
+       source, NAME;                   \
+       action, SIGNAL_EMIT SIG_UP NAME;        \
+      }                                        \
+      program {                                \
+        name, NAME"-up2";              \
+       signal, "mouse,up,1";           \
+       source, NAME;                   \
+       action, STATE_SET "over" 0.0;   \
+        transition, LINEAR 0.0;        \
+       target, NAME;                   \
+      }                                        \
+
+
+
+
+#define TOG_BUTTON(NAME, NAME2, IMG, IMG2, IMG3, IMG4, W, H, REL1_TO, REL1_REL, REL1_OFF, REL2_TO, REL2_REL, REL2_OFF) \
+      part {                           \
+        name, NAME;                    \
+       description {                   \
+         state, "default" 0.0;         \
+         min, W H;                     \
+         max, W H;                     \
+         color, 255 255 255 127;       \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG;                \
+         }                             \
+       }                               \
+       description {                   \
+         state, "toggled" 0.0;         \
+         min, W H;                     \
+         max, W H;                     \
+         visible, 0;                   \
+         color, 255 255 255 127;       \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG;                \
+         }                             \
+       }                               \
+       description {                   \
+         state, "over" 0.0;            \
+         min, W H;                     \
+         max, W H;                     \
+         color, 255 255 255 255;       \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG;                \
+         }                             \
+       }                               \
+       description {                   \
+         state, "down" 0.0;            \
+         min, W H;                     \
+         max, W H;                     \
+         color, 255 255 255 255;       \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG2;               \
+         }                             \
+       }                               \
+      }                                        \
+      part {                           \
+        name, NAME2;                   \
+       description {                   \
+         state, "default" 0.0;         \
+         min, W H;                     \
+         max, W H;                     \
+         visible, 0;                   \
+         color, 255 255 255 0;         \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG3;               \
+         }                             \
+       }                               \
+       description {                   \
+         state, "toggled" 0.0;         \
+         min, W H;                     \
+         max, W H;                     \
+         color, 255 255 255 127;       \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG3;               \
+         }                             \
+       }                               \
+       description {                   \
+         state, "over" 0.0;            \
+         min, W H;                     \
+         max, W H;                     \
+         color, 255 255 255 255;       \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG3;               \
+         }                             \
+       }                               \
+       description {                   \
+         state, "down" 0.0;            \
+         min, W H;                     \
+         max, W H;                     \
+         color, 255 255 255 255;       \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG4;               \
+         }                             \
+       }                               \
+      }                        
+
+
+#define TOG_BUTTON_PROG(NAME, NAME2, SIG, SIG2) \
+      program {                                \
+        name, NAME"-in";               \
+        signal, "mouse,in";            \
+        source, NAME;                  \
+        action, STATE_SET "over" 0.0;  \
+        transition, DECELERATE 0.5;    \
+        target, NAME;                  \
+      }                                        \
+      program {                                \
+        name, NAME"-out";              \
+        signal, "mouse,out";           \
+        source, NAME;                  \
+        action, STATE_SET "default" 0.0;\
+        transition, DECELERATE, 0.5;   \
+        target, NAME;                  \
+      }                                        \
+      program {                                \
+        name, NAME"-down1";            \
+       signal, "mouse,up,1";           \
+       source, NAME;                   \
+       action, SIGNAL_EMIT SIG NAME;   \
+      }                                        \
+      program {                                \
+        name, NAME"-down2";            \
+       signal, "mouse,down,1";         \
+       source, NAME;                   \
+       action, STATE_SET "down" 0.0    \
+        transition, LINEAR, 0.0;       \
+       target, NAME;                   \
+      }                                        \
+      program {                                \
+        name, NAME"-up";               \
+       signal, "mouse,up,1";           \
+       source, NAME;                   \
+       action, STATE_SET "over" 0.0    \
+        transition, LINEAR, 0.0;       \
+       target, NAME;                   \
+      }                                        \
+      program {                                \
+        name, NAME2"-in";              \
+        signal, "mouse,in";            \
+        source, NAME2;                 \
+        action, STATE_SET "over" 0.0;  \
+        transition, DECELERATE 0.5;    \
+        target, NAME2;                 \
+      }                                        \
+      program {                                \
+        name, NAME2"-out";             \
+        signal, "mouse,out";           \
+        source, NAME2;                 \
+        action, STATE_SET "toggled" 0.0;\
+        transition, DECELERATE, 0.5;   \
+        target, NAME2;                 \
+      }                                        \
+      program {                                \
+        name, NAME2"-up1";             \
+       signal, "mouse,up,1";           \
+       source, NAME2;                  \
+       action, SIGNAL_EMIT SIG NAME2;  \
+      }                                        \
+      program {                                \
+        name, NAME2"-down2";           \
+       signal, "mouse,down,1";         \
+       source, NAME2;                  \
+       action, STATE_SET "down" 0.0    \
+        transition, LINEAR, 0.0;       \
+       target, NAME2;                  \
+      }                                        \
+      program {                                \
+        name, NAME2"-up";              \
+       signal, "mouse,up,1";           \
+       source, NAME2;                  \
+       action, STATE_SET "over" 0.0    \
+        transition, LINEAR, 0.0;       \
+       target, NAME2;                  \
+      }                                        \
+      program {                                \
+        name, NAME"-toggle";           \
+        signal, "mouse,clicked,1";             \
+        source, NAME;                  \
+        action, STATE_SET "toggled" 0.0;       \
+        transition, LINEAR 0.0;        \
+        target, NAME;                  \
+        target, NAME2;                 \
+      }                                        \
+      program {                                \
+        name, NAME2"-toggle";          \
+        signal, "mouse,clicked,1";             \
+        source, NAME2;                 \
+        action, STATE_SET "default" 0.0;       \
+        transition, LINEAR 0.0;        \
+        target, NAME;                  \
+        target, NAME2;                 \
+      }                                        \
+
+
+
+#define TEST_BUTTON_PROG(NAME, NAME2, SIG, SIG2) \
+      program {                                \
+        name, NAME"-toggle";           \
+        signal, "mouse,clicked,1";             \
+        source, NAME;                  \
+        action, STATE_SET "toggled" 0.0;       \
+        transition, LINEAR 0.0;        \
+        target, NAME;                  \
+        target, NAME2;                 \
+      }                                        \
+      program {                                \
+        name, NAME2"-toggle";          \
+        signal, "mouse,clicked,1";             \
+        source, NAME2;                 \
+        action, STATE_SET "default" 0.0;       \
+        transition, LINEAR 0.0;        \
+        target, NAME;                  \
+        target, NAME2;                 \
+      }        
+
+
diff --git a/data/themes/winter/macros/toggle.inc b/data/themes/winter/macros/toggle.inc
new file mode 100644 (file)
index 0000000..9a2431a
--- /dev/null
@@ -0,0 +1,251 @@
+/* this makes life MUCH easier */
+
+#define TOGGLE_BUTTON(NAME, IMG, IMG2, IMG3, IMG4, W, H, REL1_TO, REL1_REL, REL1_OFF, REL2_TO, REL2_REL, REL2_OFF) \
+      part {                                    \
+        name, NAME"-clip";                     \
+       type, RECT;                             \
+       mouse_events, 0;                        \
+       description {                           \
+         state, "default" 0.0;                 \
+         visible, 1;                           \
+         rel1 {                                \
+           relative, REL1_REL;                 \
+           offset, REL1_OFF;                   \
+           to, REL1_TO;                        \
+         }                                     \
+         rel2 {                                \
+           relative, REL2_REL;                 \
+           offset, REL2_OFF;                   \
+           to, REL2_TO;                        \
+         }                                     \
+         color, 255 255 255 128;               \
+       }                                       \
+       description {                           \
+         state, "over" 0.0;                    \
+         visible, 1;                           \
+         rel1 {                                \
+           relative, REL1_REL;                 \
+           offset, REL1_OFF;                   \
+           to, REL1_TO;                        \
+         }                                     \
+         rel2 {                                \
+           relative, REL2_REL;                 \
+           offset, REL2_OFF;                   \
+           to, REL2_TO;                        \
+         }                                     \
+         color, 255 255 255 255;               \
+       }                                       \
+      }                                         \
+      part {                           \
+        name, NAME;                    \
+        clip_to, NAME"-clip";           \
+       description {                   \
+         state, "default" 0.0;         \
+         min, W H;                     \
+         max, W H;                     \
+         visible, 1;                   \
+          color, 255 255 255 255;       \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG;                \
+         }                             \
+       }                               \
+       description {                   \
+         state, "toggled" 0.0;         \
+         min, W H;                     \
+         max, W H;                     \
+         visible, 0;                   \
+          color, 255 255 255 0;         \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG;                \
+         }                             \
+       }                               \
+       description {                   \
+         state, "down" 0.0;            \
+         min, W H;                     \
+         max, W H;                     \
+         color, 255 255 255 255;       \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG2;               \
+         }                             \
+       }                               \
+      }                                        \
+      part {                           \
+        name, NAME"-2";                        \
+        clip_to, NAME"-clip";           \
+       description {                   \
+         state, "default" 0.0;         \
+         min, W H;                     \
+         max, W H;                     \
+         visible, 0;                   \
+          color, 255 255 255 0;         \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG3;               \
+         }                             \
+       }                               \
+       description {                   \
+         state, "toggled" 0.0;         \
+         min, W H;                     \
+         max, W H;                     \
+         visible, 1;                   \
+          color, 255 255 255 255;       \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG3;               \
+         }                             \
+       }                               \
+       description {                   \
+         state, "down" 0.0;            \
+         min, W H;                     \
+         max, W H;                     \
+         color, 255 255 255 255;       \
+         rel1 {                        \
+           to, REL1_TO;                \
+           relative, REL1_REL;         \
+           offset, REL1_OFF;           \
+         }                             \
+         rel2 {                        \
+           to, REL2_TO;                \
+           relative, REL2_REL;         \
+           offset, REL2_OFF;           \
+         }                             \
+         image {                       \
+           normal, IMG4;               \
+         }                             \
+       }                               \
+      }                                 \
+      part {                                    \
+        name, NAME"-grabber";                  \
+       type, RECT;                             \
+       mouse_events, 1;                        \
+        repeat_events, 1;                       \
+       description {                           \
+         state, "default" 0.0;                 \
+         visible, 1;                           \
+         color, 0 0 0 0;                       \
+         rel1 {                                \
+           relative, REL1_REL;                 \
+           offset, REL1_OFF;                   \
+           to, REL1_TO;                        \
+         }                                     \
+         rel2 {                                \
+           relative, REL2_REL;                 \
+           offset, REL2_OFF;                   \
+           to, REL2_TO;                        \
+         }                                     \
+       }                                       \
+      }                                         \
+
+
+
+#define TOGGLE_BUTTON_PROG(NAME, SIG, SIG2) \
+      program {                 \
+        name, NAME"-toggle-on"; \
+        signal, "mouse,clicked,1"; \
+        source, NAME; \
+        action, STATE_SET "toggled" 0.0; \
+        transition, LINEAR 0.0; \
+        target, NAME; \
+        target, NAME"-2"; \
+        after, NAME"-sig"; \
+      } \
+      program { \
+        name, NAME"-sig"; \
+        action, SIGNAL_EMIT SIG NAME; \
+      } \
+      program { \
+        name, NAME"-toggle-off"; \
+        signal, "mouse,clicked,1"; \
+        source, NAME"-2"; \
+        action, STATE_SET "default" 0.0; \
+        transition, LINEAR 0.0; \
+        target, NAME; \
+        target, NAME"-2"; \
+        after, NAME"-sig2"; \
+      } \
+      program { \
+        name, NAME"-sig2"; \
+        action, SIGNAL_EMIT SIG2 NAME"-2"; \
+      } \
+      program { \
+        name, NAME"-grabber-in"; \
+        signal, "mouse,in"; \
+        source, NAME"-grabber"; \
+        action, STATE_SET "over" 0.0; \
+        transition, DECELERATE 0.5; \
+        target, NAME"-clip"; \
+      } \
+      program { \
+        name, NAME"-grabber-out"; \
+        signal, "mouse,out"; \
+        source, NAME"-grabber"; \
+        action, STATE_SET "default" 0.0; \
+        transition, DECELERATE 0.5; \
+        target, NAME"-clip"; \
+      } \
+      program { \
+        name, NAME"-down"; \
+        signal, "mouse,down,1"; \
+        source, NAME; \
+        action, STATE_SET "down" 0.0; \
+        transition, LINEAR 0.0; \
+        target, NAME; \
+      } \
+      program { \
+        name, NAME"-2-down"; \
+        signal, "mouse,down,1"; \
+        source, NAME"-2"; \
+        action, STATE_SET "down" 0.0; \
+        transition, LINEAR 0.0; \
+        target, NAME"-2"; \
+      } \
+
+
diff --git a/data/themes/winter/parts/ani.edc b/data/themes/winter/parts/ani.edc
new file mode 100644 (file)
index 0000000..5962177
--- /dev/null
@@ -0,0 +1,49 @@
+#define DOT(NUM, Y1, Y2) \
+      part { \
+        name, "dot"NUM; \
+        description { \
+          state, "default" 0.0; \
+          min, 3 3; \
+          max, 3 3; \
+          color, 0 0 0 127; \
+          rel1 { \
+            to, "screen"; \
+            relative, 0 1; \
+            offset, 5 Y1;  \
+          } \
+          rel2 { \
+            to, "screen"; \
+            relative, 0 1; \
+            offset, 8 Y2;  \
+          } \
+          image { \
+            normal, "dot.png"; \
+          } \
+        } \
+        description { \
+          state, "end" 0.0; \
+          min, 3 3; \
+          max, 3 3; \
+          color, 0 0 0 0; \
+          rel1 { \
+            to, "screen"; \
+            relative, .5 1; \
+            offset, -3 Y1;  \
+          } \
+          rel2 { \
+            to, "screen"; \
+            relative, .5 1; \
+            offset, 0 Y2;  \
+          } \
+          image { \
+            normal, "dot.png"; \
+          } \
+        } \
+      } 
+
+DOT(0, -24, -21)
+DOT(1, -20, -17)
+DOT(2, -16, -13)
+DOT(3, -12, -9)
+DOT(4, -8, -5)
+
diff --git a/data/themes/winter/parts/buttons.edc b/data/themes/winter/parts/buttons.edc
new file mode 100644 (file)
index 0000000..ffeedf5
--- /dev/null
@@ -0,0 +1,156 @@
+      part {
+        name, "controlArea";
+       type, RECT;
+       description {
+         state, "default" 0.0;
+         visible, 0;
+         min, 120 25;
+         max, 120 25;
+         rel1 {
+           to, "main";
+           relative, 0 1;
+           offset, 0 -59;
+         }
+         rel2 {
+           to, "main";
+           relative, 1 1;
+           offset, -1 -35;
+         }
+       }
+      } //part
+
+BUTTON("prev", "prev1.png", "prev2.png", 26, 22,
+       "controlArea", 0 0, 5 0, 
+       "controlArea", 0 1, 31 -1)
+BUTTON("rew", "rew1.png", "rew2.png", 17, 22,
+       "controlArea", 0 0, 32 0, 
+       "controlArea", 0 1, 51 -1)
+TOGGLE_BUTTON("play", "play1.png", "play2.png",
+              "pause1.png", "pause2.png", 20, 22,
+              "controlArea", 0 0, 51 0,
+              "controlArea", 0 1, 71 -1)
+BUTTON("ff", "ff1.png", "ff2.png", 17, 22,
+       "controlArea", 0 0, 71 0,
+       "controlArea", 0 1, 88 -1)
+BUTTON("next", "next1.png", "next2.png", 26, 22,
+       "controlArea", 0 0, 89 0,
+       "controlArea", 0 1, 117 -1)
+
+
+BUTTON("pl", "pl1.png", "pl2.png", 17, 17,
+       "main", 1 1, -21 -47, 
+       "main", 1 1, -4 -30)
+
+BUTTON("x", "x1.png", "x2.png", 15, 15,
+       "main", 1 1, -20 -27, 
+       "main", 1 1, -5 -12)
+
+
+      part {
+        name, "playlistButtonArea";
+       type, RECT;
+       description {
+         state, "default" 0.0;
+         visible, 0;
+         min, 61 20;
+         max, 61 20;
+         rel1 {
+           to, "playlistPanel";
+           relative, 0 1;
+           offset, 0 -23;
+         }
+         rel2 {
+           to, "playlistPanel";
+           relative, 1 1;
+           offset, -1 -4;
+         }
+       }
+      } //part
+
+BUTTON_CLIPPED("plus", "plus1.png", "plus2.png", 17, 17,
+       "playlistButtonArea", 0 0, 3 2, 
+       "playlistButtonArea", 0 0, 20 19,
+       "playlistClip")
+BUTTON_CLIPPED("minus", "minus1.png", "minus2.png", 19, 10,
+       "playlistButtonArea", 0 0, 21 6,
+       "playlistButtonArea", 0 0, 40 16,
+       "playlistClip")
+BUTTON_CLIPPED("edit", "edit1.png", "edit2.png", 20, 9,
+       "playlistButtonArea", 0 0, 39 6, 
+       "playlistButtonArea", 0 0, 59 15,
+       "playlistClip")
+
+
+
+      part {
+        name, "playlistOpenner";
+       type, RECT;
+       repeat_events, 1;
+       description {
+         state, "default" 0.0;
+         visible, 1;
+         color, 0 0 0 0;
+         rel1 {
+           to, "pl";
+           relative, 0 0;
+           offset, 0 0;
+         }
+         rel2 {
+           to, "pl";
+           relative, 1 1;
+           offset, -1 -1;
+         }
+       }
+       description {
+         state, "open" 0.0;
+         visible, 0;
+         color, 0 0 0 0;
+         rel1 {
+           to, "pl";
+           relative, 0 0;
+           offset, 0 0;
+         }
+         rel2 {
+           to, "pl";
+           relative, 1 1;
+           offset, -1 -1;
+         }
+       }
+      } //part
+
+
+      part {
+        name, "playlistCloser";
+       type, RECT;
+       repeat_events, 1;
+       description {
+         state, "default" 0.0;
+         visible, 0;
+         color, 0 0 0 0;
+         rel1 {
+           to, "pl";
+           relative, 0 0;
+           offset, 0 0;
+         }
+         rel2 {
+           to, "pl";
+           relative, 1 1;
+           offset, -1 -1;
+         }
+       }
+       description {
+         state, "open" 0.0;
+         visible, 1;
+         color, 0 0 0 0;
+         rel1 {
+           to, "pl";
+           relative, 0 0;
+           offset, 0 0;
+         }
+         rel2 {
+           to, "pl";
+           relative, 1 1;
+           offset, -1 -1;
+         }
+       }
+      } //part
diff --git a/data/themes/winter/parts/main.edc b/data/themes/winter/parts/main.edc
new file mode 100644 (file)
index 0000000..a70ca58
--- /dev/null
@@ -0,0 +1,189 @@
+
+           part {
+               name, "main";
+               mouse_events, 1;
+               repeat_events, 1;
+                 description {
+                   state, "default" 0.0;
+                   min, 199 182;
+                   max, 99999 182;
+                   rel1 {
+                     relative, 0 0;
+                     offset, 0 0;
+                   }
+                   rel2 {
+                     relative, 1 0;
+                     offset, -1 182;
+                   }
+                   image {
+                       normal, "main.png";
+                       border, 10 10 20 10;
+                   }
+               }
+           } //part
+
+           part {
+               name, "top_grad";
+               mouse_events, 1;
+               repeat_events, 1;
+                 description {
+                   state, "default" 0.0;
+                   min, 30 10;
+                   max, 99999 10;
+                       color, WINTER_COLOR;
+                   rel1 {
+                      to, "main";
+                     relative, 0 0;
+                     offset, 0 0;
+                   }
+                   rel2 {
+                      to, "main";
+                     relative, 1 0;
+                     offset, -1 10;
+                   }
+                   image {
+                       normal, "top_grad.png";
+                       border, 10 10 10 10;
+                   }
+               }
+           } //part
+
+      part {
+        name, "screen";
+       description {
+         state, "default" 0.0;
+         visible, 1;
+         rel1 {
+           to, "main";
+           relative, 0 0;
+           offset, 7 17;
+         }
+         rel2 {
+           to, "main";
+           relative, 1 0;
+           offset, -8 101;
+         }
+         image {
+           normal, "screen.png";
+           border, 5 5 5 5;
+         }
+       }
+      }
+
+
+            part {
+             name, "bottomConfine";
+             mouse_events, 0;
+             type, RECT;
+             description {
+               state, "default" 0.0;
+               visible, 0;
+               rel1 {
+                 to, "main";
+                 relative, 0 1;
+                 offset, 0 -1;
+               }
+               rel2 {
+                 relative, 1 1;
+                 offset, -1 -1;
+               }
+             }
+           } //part
+           
+           part {
+             name, "bottom";
+             mouse_events, 1;
+              repeat_events, 1;
+             //dragable {
+              //  x, 1 0 0;
+             //  y, -1 1 25;
+             //  confine, "bottomConfine";
+             //}
+/*
+             description {
+               state, "default" 0.0;
+               min, 199 10;
+               rel1 {
+                 to_x, "main";
+                 relative, 0 1;
+                 offset, 0 -11;
+               }
+               rel2 {
+                 to_x, "main";
+                 relative, 1 1;
+                 offset, -1 -1;
+               }
+               image {
+                 normal, "bot.png";
+                 border, 0 0 0 0;
+               }
+               border, 7 7 0 0;
+             }
+*/
+
+
+             description {
+               state, "default" 0.0;
+               min, 199 10;
+               max, 99999 10;
+               rel1 {
+                 to, "main";
+                 relative, 0 1;
+                 offset, 0 -1;
+               }
+               rel2 {
+                 to, "main";
+                 relative, 1 1;
+                 offset, -1 9;
+               }
+               image {
+                 normal, "bot.png";
+                         border, 7 7 0 0;
+               }
+             }
+             description {
+               state, "open" 0.0;
+               min, 199 10;
+               max, 99999 10;
+               rel1 {
+                 to_x, "main";
+                 relative, 0 1;
+                 offset, 0 -11;
+               }
+               rel2 {
+                 to_x, "main";
+                 relative, 1 1;
+                 offset, -1 -1;
+               }
+               image {
+                 normal, "bot.png";
+                         border, 7 7 0 0;
+               }
+             }
+           } //part
+
+           part {
+               name, "bottom_grad";
+               mouse_events, 1;
+               repeat_events, 1;
+                 description {
+                   state, "default" 0.0;
+                   min, 30 10;
+                   max, 99999 10;
+                       color, WINTER_COLOR;
+                   rel1 {
+                      to, "bottom";
+                     relative, 0 0;
+                     offset, 0 0;
+                   }
+                   rel2 {
+                      to, "bottom";
+                     relative, 1 1;
+                     offset, -1 -1;
+                   }
+                   image {
+                       normal, "bot_grad.png";
+                               border, 10 10 10 10;
+                   }
+               }
+           } //part
diff --git a/data/themes/winter/parts/playlist.edc b/data/themes/winter/parts/playlist.edc
new file mode 100644 (file)
index 0000000..6f31ce9
--- /dev/null
@@ -0,0 +1,110 @@
+
+           part {
+               name, "playlistPanel";
+               mouse_events, 1;
+               description {
+                   state, "default" 0.0;
+                   rel1 {
+                     to, "main";
+                     relative, 0 1;
+                     offset, 1 0;
+                   }
+                   rel2 {
+                     to, "bottom";
+                     relative, 1 0;
+                     offset, -2 -1;
+                   }
+                   image {
+                       normal, "panel.png";
+                               border, 3 3 0 0;
+                   }
+               }
+           } //part
+
+           part {
+               name, "playlist.container";
+               type, SWALLOW;
+               mouse_events, 1;
+               repeat_events, 1;
+               clip_to, "playlistClip";
+               description {
+                   state, "default" 0.0;
+                   color, 0 0 0 0;
+                   min, 5 5;
+                   rel1 {
+                     to, "playlistPanel";
+                     relative, 0 0;
+                     offset, 5 5;
+                   }
+                   rel2 {
+                     to_x, "playlistPanel";
+                     to_y, "playlistButtonArea";
+                     relative, 1 0;
+                     offset, -6 -5;
+                   }
+               }
+           } //part
+
+            part {
+             name, "playlistGrabber";
+             type, RECT;
+             mouse_events, 1;
+             repeat_events, 1;
+             description {
+               state, "default" 0.0;
+               color, 0 0 0 0;
+               rel1 {
+                 to, "playlist.container";
+                 relative, 0 0;
+                 offset, 0 0;
+               }
+               rel2 {
+                 to, "playlist.container";
+                 relative, 1 1;
+                 offset, -1 -1;
+               }
+             }
+           } // end playlistGrabber
+
+           part {
+               name, "playlistShadow";
+               mouse_events, 1;
+               clip_to, "playlistClip";
+               description {
+                   state, "default" 0.0;
+                   rel1 {
+                     to, "playlistPanel";
+                     relative, 0 0;
+                     offset, 0 0;
+                   }
+                   rel2 {
+                     to, "playlistPanel";
+                     relative, 1 0;
+                     offset, -1 5;
+                   }
+                   image {
+                       normal, "shad.png";
+                   }
+               }
+           } //part
+
+
+           part {
+               name, "playlistClip";
+               type, RECT;
+               mouse_events, 1;
+               description {
+                   state, "default" 0.0;
+                   rel1 {
+                     to, "playlistPanel";
+                     relative, 0 0;
+                     offset, 0 0;
+                   }
+                   rel2 {
+                     to, "playlistPanel";
+                     relative, 1 1;
+                     offset, -1 -1;
+                   }
+               }
+           } //part
+
diff --git a/data/themes/winter/parts/seeker.edc b/data/themes/winter/parts/seeker.edc
new file mode 100644 (file)
index 0000000..cd34af9
--- /dev/null
@@ -0,0 +1,123 @@
+
+      part {
+        name, "seekerTrough";
+       description {
+         state, "default" 0.0;
+         visible, 1;
+         min, 10 6;
+         max, 9999 6;
+         rel1 {
+           to, "screen";
+           relative, 0 1;
+           offset, 5 7;
+         }
+         rel2 {
+           to, "screen";
+           relative, 1 1;
+           offset, -6 13;
+         }
+         image {
+           normal, "seeker_trough.png";
+               border, 5 5 1 1;
+         }
+       }
+      }
+
+      part {
+        name, "seekerBar";
+       description {
+         state, "default" 0.0;
+         visible, 1;
+         min, 0 6;
+         max, 9999 6;
+         rel1 {
+           to, "seekerTrough";
+           relative, 0 0;
+           offset, 0 0;
+         }
+         rel2 {
+           to_x, "seeker";
+           to_y, "seekerTrough";
+           relative, 0 1;
+           offset, 0 -1;
+         }
+         image {
+           normal, "seeker_bar.png";
+               border, 5 5 1 1;
+         }
+       }
+      }
+      part {
+        name, "seekerBarGrad";
+       description {
+         state, "default" 0.0;
+         visible, 1;
+         min, 0 6;
+         max, 9999 6;
+          color, WINTER_COLOR;
+         rel1 {
+           to, "seekerBar";
+           relative, 0 0;
+           offset, 0 0;
+         }
+         rel2 {
+           to, "seekerBar";
+           relative, 1 1;
+           offset, -1 -1;
+         }
+         image {
+           normal, "seeker_bar_grad.png";
+         border, 5 5 1 1;
+         }
+       }
+      }
+
+      part {
+        name, "seeker";
+       type, RECT;
+       dragable {
+         x, 1 1 1; 
+         y, 0 0 0;
+         confine, "seekerTrough";
+       }
+       description {
+         state, "default" 0.0;
+         visible, 0;
+         color, 0 0 0 255;
+         min, 1 6;
+         max, 1 6;
+         rel1 {
+           to, "seekerTrough";
+           relative, 0 0;
+           offset, 0 0;
+         }
+         rel2 {
+           to, "seekerTrough";
+           relative, 1 1;
+           offset,  -1 -1;
+         }
+       }
+      }
+
+      part {
+        name, "seeker_grabber";
+       type, RECT;
+       description {
+         state, "default" 0.0;
+         visible, 1;
+         color, 0 0 0 0;
+         rel1 {
+           to, "seekerTrough";
+           relative, 0 0;
+           offset, -2 -2;
+         }
+         rel2 {
+           to, "seekerTrough";
+           relative, 1 1;
+           offset,  1 1;
+         }
+       }
+      }
+
+
+
diff --git a/data/themes/winter/parts/text.edc b/data/themes/winter/parts/text.edc
new file mode 100644 (file)
index 0000000..e413d46
--- /dev/null
@@ -0,0 +1,141 @@
+      part {
+        name, "artist_name";
+       type, TEXT;
+       mouse_events, 1;
+       description {
+         state, "default" 0.0;
+         visible, 1;
+         color, 0 0 0 200;
+         rel1 {
+           to, "screen";
+           relative, 0 0;
+           offset, 7 7;
+         }
+         rel2 {
+           to, "screen";
+           relative, 1 0;
+           offset, -5 25;
+         }
+         text {
+           text, "artist";
+           font, "Vera";
+           size, 12;
+           min, 0 1;
+           align, 0 0;
+         }
+       }
+      } //artist_name part
+
+      part {
+        name, "album_name";
+       type, TEXT;
+       mouse_events, 1;
+       description {
+         state, "default" 0.0;
+         visible, 1;
+         color, 0 0 0 200;
+         rel1 {
+           to, "artist_name";
+           relative, 0 1;
+           offset, 0 5;
+         }
+         rel2 {
+           to, "artist_name";
+           relative, 1 0;
+           offset, 0 25;
+         }
+         text {
+           text, "album";
+           font, "Vera";
+           size, 10;
+           min, 0 1;
+           align, 0 0;
+         }
+       }
+      } // album_name part
+
+      part {
+        name, "song_name";
+       type, TEXT;
+       mouse_events, 1;
+       description {
+         state, "default" 0.0;
+         visible, 1;
+         color, 0 0 0 200;
+         rel1 {
+           to, "album_name";
+           relative, 0 1;
+           offset, 0 5;
+         }
+         rel2 {
+           to, "album_name";
+           relative, 1 0;
+           offset, 0 25;
+         }
+         text {
+           text, "song";
+           font, "Vera";
+           size, 10;
+           min, 0 1;
+           align, 0 0;
+         }
+       }
+      } //part
+
+      part {
+        name, "player.time";
+       type, TEXT;
+       mouse_events, 1;
+       description {
+         state, "default" 0.0;
+         visible, 1;
+         color, 0 0 0 200;
+         rel1 {
+           to_x, "screen";
+           to_y, "song_name";
+           relative, 0 1;
+           offset, 7 5;
+         }
+         rel2 {
+           to, "screen";
+           relative, 1 1;
+           offset, -8 -8;
+         }
+         text {
+           text, "00:00";
+           font, "Vera";
+           size, 14;
+           min, 0 1;
+           align, 1 0;
+         }
+       }
+      } //time_text part
+
+
+      part {
+        name, "vol_display_text";
+       type, TEXT;
+       mouse_events, 1;
+       description {
+         state, "default" 0.0;
+         visible, 1;
+         color, 0 0 0 200;
+         rel1 {
+           to, "volumeBox";
+           relative, 0 0;
+           offset, 2 3;
+         }
+         rel2 {
+           to, "volumeBox";
+           relative, 1 1;
+           offset, -3 -3;
+         }
+         text {
+           text, "100";
+           font, "Vera";
+           size, 10;
+           min, 0 0;
+           align, .5 .5;
+         }
+       }
+      } //part
diff --git a/data/themes/winter/parts/volume.edc b/data/themes/winter/parts/volume.edc
new file mode 100644 (file)
index 0000000..5313fbd
--- /dev/null
@@ -0,0 +1,30 @@
+      part {
+        name, "volumeBox";
+       description {
+         min, 27 16;
+         max, 27 16;
+         rel1 {
+           to, "controlArea";
+           relative, 0 1;
+           offset, 0 7;
+         }
+         rel2 {
+           to, "controlArea";
+           relative, 1 1;
+           offset, -1 23;
+         }
+         image {
+           normal, "volume.png";
+         }
+       }
+      } //part
+
+BUTTON2("vol-dn", "vol-dn.png", "vol-dn-clicked.png", "vol-dn-border.png",
+        11, 16,
+        "volumeBox", 0 0, -10 0, 
+        "volumeBox", 0 1, 0 -1)
+BUTTON2("vol-up", "vol-up.png", "vol-up-clicked.png", "vol-up-border.png",
+        11, 16,
+        "volumeBox", 1 0, -1 0, 
+        "volumeBox", 1 1, 10 -1)
+
diff --git a/data/themes/winter/programs/ani.edc b/data/themes/winter/programs/ani.edc
new file mode 100644 (file)
index 0000000..b12729b
--- /dev/null
@@ -0,0 +1,81 @@
+#define DOT_PROG(NUM, S1, S2) \
+      program { \
+        name, "ani"NUM".1"; \
+        action, STATE_SET "end" 0.0; \
+        transition, DECELERATE S1; \
+        target, "dot"NUM; \
+        after, "ani"NUM".2"; \
+      } \
+      program { \
+        name, "ani"NUM".2"; \
+        action, STATE_SET "default" 0.0; \
+        target, "dot"NUM; \
+        transition, LINEAR 0.0; \
+        after, "ani"NUM".3"; \
+        in, .5 .5; \
+      } \
+      program { \
+        name, "ani"NUM".3"; \
+        action, STATE_SET "end" 0.0; \
+        transition, DECELERATE S2; \
+        target, "dot"NUM; \
+        after, "ani"NUM".4"; \
+      } \
+      program { \
+        name, "ani"NUM".4"; \
+        action, STATE_SET "default" 0.0; \
+        target, "dot"NUM; \
+        transition, LINEAR 0.0; \
+        after, "ani"NUM".1"; \
+        in, .5 .5; \
+      } \
+      program { \
+        name, "ani"NUM".stop"; \
+        action, ACTION_STOP; \
+        target, "ani"NUM".1"; \
+        target, "ani"NUM".2"; \
+        target, "ani"NUM".3"; \
+        target, "ani"NUM".4"; \
+        after, "ani"NUM".reset"; \
+      } \
+      program { \
+        name, "ani"NUM".init"; \
+        signal, "show"; \
+        source, ""; \
+        after, "ani"NUM".stop"; \
+      } \
+      program { \
+        name, "ani"NUM".reset"; \
+        action, STATE_SET "default" 0.0; \
+        target, "dot"NUM; \
+        transition, LINEAR 0.0; \
+        /* the following line breaks the animation, since the
+         * program's execution is delayed by 0.5-1.0 seconds.
+         * This kinda spoils the effect though :/
+         * rewrite with embryo! :)
+        in, .5 .5;*/ \
+      } \
+      program {  \
+        name, "ani"NUM".playing"; \
+        signal, "PLAYBACK_STATE_PLAYING";  \
+        source, "*";  \
+        after, "ani"NUM".1"; \
+      } \
+      program {  \
+        name, "ani"NUM".paused"; \
+        signal, "PLAYBACK_STATE_PAUSED";  \
+        source, "*";  \
+        after, "ani"NUM".stop"; \
+      } \
+      program {  \
+        name, "ani"NUM".stopped"; \
+        signal, "PLAYBACK_STATE_STOPPED";  \
+        source, "*";  \
+        after, "ani"NUM".stop"; \
+      }
+
+DOT_PROG(0, 1.15, .85)
+DOT_PROG(1, .75, 1)
+DOT_PROG(2, 1.5, 2.0)
+DOT_PROG(3, 1.25, .75)
+DOT_PROG(4, 1.0, 1.5)
diff --git a/data/themes/winter/programs/buttons.edc b/data/themes/winter/programs/buttons.edc
new file mode 100644 (file)
index 0000000..3484b8c
--- /dev/null
@@ -0,0 +1,38 @@
+BUTTON_PROG("prev", "playback.prev")
+//BUTTON_PROG("rew", "SEEK_BACK")
+BUTTON_PROG3("rew", "SEEK_BACK_START", "SEEK_BACK_STOP")
+//BUTTON_PROG("play", "playback.play")
+//BUTTON_PROG("pause", "playback.pause")
+TOGGLE_BUTTON_PROG("play", "playback.play", "playback.pause")
+//BUTTON_PROG("ff", "SEEK_FORWARD")
+BUTTON_PROG3("ff", "SEEK_FORWARD_START", "SEEK_FORWARD_STOP")
+BUTTON_PROG("next", "playback.next")
+
+
+BUTTON_PROG("pl", "")
+BUTTON_PROG("x", "close")
+
+
+BUTTON_PROG("plus", "file_dialog.open")
+BUTTON_PROG("minus", "PLAYLIST_DEL")
+BUTTON_PROG("edit", "")
+
+
+      program {                 
+        name, "play-started"; 
+        signal, "PLAYBACK_STATE_PLAYING"; 
+        source, "*"; 
+        action, STATE_SET "toggled" 0.0; 
+        transition, LINEAR 0.0; 
+        target, "play"; 
+        target, "play-2"; 
+      } 
+      program {                 
+        name, "play-stopped"; 
+        signal, "PLAYBACK_STATE_STOPPED"; 
+        source, "*"; 
+        action, STATE_SET "default" 0.0; 
+        transition, LINEAR 0.0; 
+        target, "play"; 
+        target, "play-2"; 
+      } 
diff --git a/data/themes/winter/programs/playlist.edc b/data/themes/winter/programs/playlist.edc
new file mode 100644 (file)
index 0000000..57fe6b5
--- /dev/null
@@ -0,0 +1,34 @@
+      program {                                
+        name, "playlistOpen";                  
+       signal, "mouse,up,1";           
+       source, "playlistOpenner";                      
+       action, STATE_SET "open" 0.0;   
+        transition, DECELERATE 0.5;    
+       target, "bottom";
+       target, "playlistOpenner";
+       target, "playlistCloser";
+      }                                        
+      program {                                
+        name, "playlistClose";                 
+       signal, "mouse,up,1";           
+       source, "playlistCloser";                       
+       action, STATE_SET "default" 0.0;        
+        transition, DECELERATE 0.5;    
+       target, "bottom";
+       target, "playlistOpenner";
+       target, "playlistCloser";
+      }                                        
+
+
+           program {
+               name, "scroll_up";
+               signal, "mouse,wheel,0,-1";
+               source, "playlistGrabber";
+               action, SIGNAL_EMIT "PLAYLIST_SCROLL_UP" "";
+           } 
+           program {
+               name, "scroll_down";
+               signal, "mouse,wheel,0,1";
+               source, "playlistGrabber";
+               action, SIGNAL_EMIT "PLAYLIST_SCROLL_DOWN" "";
+           } 
diff --git a/data/themes/winter/programs/seeker.edc b/data/themes/winter/programs/seeker.edc
new file mode 100644 (file)
index 0000000..bbf2867
--- /dev/null
@@ -0,0 +1,18 @@
+      program {
+        name, "seeker-start";
+       signal, "mouse,down,1";
+       source, "seeker_grabber";
+       action, SIGNAL_EMIT "SEEKER_START" "";
+      }
+      program {
+        name, "seeker-update";
+       signal, "mouse,move";
+       source, "seeker_grabber";
+       action, SIGNAL_EMIT "SEEKER_UPDATE" "";
+      }
+      program {
+        name, "seeker-stop";
+       signal, "mouse,up,1";
+       source, "seeker_grabber";
+       action, SIGNAL_EMIT "SEEKER_STOP" "";
+      }
diff --git a/data/themes/winter/programs/switch.edc b/data/themes/winter/programs/switch.edc
new file mode 100644 (file)
index 0000000..da96dac
--- /dev/null
@@ -0,0 +1,6 @@
+      program {
+        name, "switch";
+        signal, "mouse,down,1,double";
+        source, "main";
+        action, SIGNAL_EMIT "SWITCH_GROUP" "collapsed";
+      }
diff --git a/data/themes/winter/programs/text.edc b/data/themes/winter/programs/text.edc
new file mode 100644 (file)
index 0000000..29b99fc
--- /dev/null
@@ -0,0 +1,12 @@
+      program {
+        name, "time_toggle";
+       signal, "mouse,clicked,1";
+        source, "time_text";
+       action, SIGNAL_EMIT "TOGGLE_TIME_DISPLAY_MODE" "time_toggle";
+      }
+      program {
+        name, "repeat_toggle";
+       signal, "mouse,clicked,1";
+       source, "repeat*";
+       action, "SIGNAL_EMIT" "TOGGLE_REPEAT_MODE" "repeat_toggle";
+      }
diff --git a/data/themes/winter/programs/volume.edc b/data/themes/winter/programs/volume.edc
new file mode 100644 (file)
index 0000000..512f8f9
--- /dev/null
@@ -0,0 +1,3 @@
+
+BUTTON_PROG2("vol-dn", "vol-dn.over", "vol-dn.out", "vol-dn.down", "vol-dn.down2", "vol-dn.up", "VOL_DECR")
+BUTTON_PROG2("vol-up", "vol-up.over", "vol-up.out", "vol-up.down", "vol-up.down2", "vol-up.up", "VOL_INCR")
diff --git a/data/themes/winter/winter.edc b/data/themes/winter/winter.edc
new file mode 100644 (file)
index 0000000..84b8f5f
--- /dev/null
@@ -0,0 +1,25 @@
+#define WINTER_BLUE 229 239 255 255
+#define WINTER_GREEN 229 255 239 255
+#define WINTER_RED 255 229 229 255
+
+#define WINTER_COLOR WINTER_BLUE
+
+#include "../common.inc"
+
+#include "macros/macros.inc"
+#include "macros/toggle.inc"
+
+images {
+#include "images/euphoria.edc"
+#include "images/collapsed.edc"
+}
+
+fonts {
+  font, "Vera.ttf" "Vera";
+}
+
+collections {
+#include "groups/euphoria.edc"
+#include "groups/collapsed.edc"
+#include "groups/playlist_item.edc"    
+} //collections
diff --git a/lib/file_dialog.rb b/lib/file_dialog.rb
new file mode 100644 (file)
index 0000000..91ecdc7
--- /dev/null
@@ -0,0 +1,66 @@
+require "esmart_file_dialog"
+
+class FileDialog < Ecore::Evas::SoftwareX11
+       def FileDialog.open(eet)
+               fd = FileDialog.new(eet) { |file| yield file }
+               fd.show
+       end
+
+       def initialize(eet)
+               super()
+
+               setup_ee
+
+               @fd = Esmart::FileDialog.new(evas, eet) do |op|
+                       case op
+                       when :ok
+                               @fd.selections.each do |sel|
+                                       yield File.join(@fd.current_directory, sel)
+                               end
+                       when :cancel
+                               close
+                       end
+               end
+
+               @fd.show
+
+               w, h = @fd.edje.get_size_max
+               set_size_max(w, h)
+
+               w, h = @fd.edje.get_size_min
+               set_size_min(w, h)
+
+               resize(w, h)
+       end
+
+       def close
+               @bg = nil
+               @dragger = nil
+               delete
+       end
+
+       private
+       def setup_ee
+               self.title = "Euphoria File Dialog"
+               self.borderless = true
+
+               on_pre_render { Edje.thaw }
+               on_post_render { Edje.freeze }
+
+               on_resize do
+                       x, y, w, h = geometry
+
+                       @dragger.resize(w, h)
+                       @bg.resize(w, h)
+                       @fd.resize(w, h)
+               end
+
+               @bg = Evas::Rectangle.new(evas)
+               @bg.set_color(89, 94, 97, 255)
+               @bg.show
+
+               @dragger = Esmart::Draggies.new(self)
+               @dragger.button = 1
+               @dragger.show
+       end
+end
diff --git a/lib/playback_status_handler.rb b/lib/playback_status_handler.rb
new file mode 100644 (file)
index 0000000..dc5c09e
--- /dev/null
@@ -0,0 +1,17 @@
+# $Id: playback_status_handler.rb,v 1.1 2005/04/24 22:33:15 tsauerbeck Exp $
+
+class PlaybackStatusHandler
+       def initialize(xmms, &block)
+               @block = block
+
+               @state = xmms.playback_status.wait.value
+               @block.call(@state)
+
+               xmms.broadcast_playback_status.notifier do |res|
+                       if @state != res.value
+                               @state = res.value
+                               @block.call(@state)
+                       end
+               end
+       end
+end
diff --git a/lib/playlist.rb b/lib/playlist.rb
new file mode 100644 (file)
index 0000000..6d22e6d
--- /dev/null
@@ -0,0 +1,194 @@
+# $Id: playlist.rb,v 1.30 2006/03/11 19:09:32 tsauerbeck Exp $
+
+require "euphoria/playlist_item"
+
+class Playlist < Array
+       attr_reader :container
+
+       def initialize(xmms, on_cur_item_changed)
+               super()
+
+               @xmms = xmms
+               @on_cur_item_changed = on_cur_item_changed
+               @ee = nil
+               @eet = nil
+               @container = nil
+
+               @xmms.playlist_list.notifier { |res| push(*res.value) }
+
+               begin
+                       @current_pos = @xmms.playlist_current_pos.wait.value
+               rescue Xmms::Result::ValueError
+                       @current_pos = nil
+               end
+
+               @xmms.broadcast_playlist_current_pos.notifier do |res|
+                       @current_pos = res.value
+
+                       tmp = find { |i| i.hilighted }
+                       tmp.hilighted = false unless tmp.nil?
+
+                       current_item.hilighted = true
+               end
+
+               @xmms.broadcast_playlist_changed.notifier do |res|
+                       case res.value[:type]
+                               when Xmms::Result::PLAYLIST_CHANGED_ADD
+                                       self << res.value[:id]
+                               when Xmms::Result::PLAYLIST_CHANGED_REMOVE
+                                       # the daemon sends the position of the song, not the
+                                       # unique mlib id
+                                       delete(self[res.value[:position]])
+                               when Xmms::Result::PLAYLIST_CHANGED_CLEAR
+                                       clear
+                       end
+               end
+
+               @xmms.broadcast_medialib_entry_changed.notifier do |res|
+                       @xmms.medialib_get_info(res.value).notifier do |res2|
+                               props = res2.value
+
+                               find_all { |i| i.id == props[:id] }.each do |item|
+                                       item.properties = props
+
+                                       if current_item && current_item.id == item.id
+                                               @on_cur_item_changed.call(item)
+                                       end
+                               end
+                       end
+               end
+       end
+
+       def current_item
+               @current_pos && self[@current_pos]
+       end
+
+       def show(eet, is_separate)
+               return unless @ee.nil?
+
+               @eet = eet
+
+               if is_separate
+                       setup_ee
+               else
+                       @ee = Euphoria.instance.ee
+                       @edje = Euphoria.instance.edje
+               end
+
+               @container = Esmart::Container.new(@edje.evas)
+               @container.name = "playlist"
+               @container.direction = Esmart::Container::VERTICAL
+               @container.spacing = 0
+               @container.fill_policy = Esmart::Container::FILL_X
+               @container.show
+
+               @edje.part("playlist.container").swallow(@container)
+
+               if is_separate
+                       @edje.on_signal("close") do
+                               each { |i| i.hide }
+
+                               @edje = nil
+                               @container = nil
+                               @dragger = nil
+                               @ee.delete
+                               @ee = nil
+                       end
+               end
+
+               @edje.on_signal("drag", "playlist.scrollbar.handle") do
+                       @container.scroll_percent =
+                               @edje.part("playlist.scrollbar.handle").
+                               get_drag_value.last
+               end
+
+               if is_separate
+                       @edje.on_signal("file_dialog.open") do
+                               Euphoria.instance.show_file_dialog
+                       end
+               end
+
+               @edje.on_signal("playlist_item.remove") do
+                       find_all { |i| i.selected }.each do |i|
+                               @xmms.playlist_remove(i.position)
+                       end
+               end
+
+               each { |i| i.show(eet) }
+
+               current_item && (current_item.hilighted = true)
+       end
+
+       def <<(id)
+               push(id)
+       end
+
+       def push(*args)
+               args.each do |id|
+                       item = PlaylistItem.new(id, @xmms, self)
+                       super(item)
+
+                       item.show(@eet) unless @container.nil?
+                       (item.selected = true) if size == 1
+               end
+
+               self
+       end
+
+       def delete(item)
+               unless item.is_a?(PlaylistItem)
+                       item = find { |i| i.id == item }
+               end
+
+               item.hide if item.visible?
+               super
+
+               # fix up positions of the remaining items
+               self[item.position..-1].each do |item|
+                       item.position -= 1
+               end
+       end
+
+       def clear
+               each { |i| i.hide if i.visible? }
+               super
+       end
+
+       private
+       def setup_ee
+               @ee = Ecore::Evas::SoftwareX11.new
+               @ee.title = "Euphoria Playlist"
+               @ee.borderless = true
+
+               @ee.on_pre_render { Edje::thaw }
+               @ee.on_post_render { Edje::freeze }
+
+               @ee.on_resize do
+                       x, y, w, h = @ee.geometry
+
+                       @edje.resize(w, h)
+                       @dragger.resize(w, h)
+               end
+
+               @dragger = Esmart::Draggies.new(@ee)
+               @dragger.name = "dragger"
+               @dragger.button = 1
+               @dragger.show
+
+               @edje = Edje::Edje.new(@ee.evas)
+               @edje.load(@eet, "playlist")
+               @edje.name = "edje"
+               @edje.show
+
+               w, h = @edje.get_size_max
+               @ee.set_size_max(w, h)
+
+               w, h = @edje.get_size_min
+               @ee.set_size_min(w, h)
+
+               @ee.resize(w, h)
+               @ee.show
+
+               @ee.shaped = !@edje.data("shaped").nil?
+       end
+end
diff --git a/lib/playlist_item.rb b/lib/playlist_item.rb
new file mode 100644 (file)
index 0000000..2a2deac
--- /dev/null
@@ -0,0 +1,126 @@
+# $Id: playlist_item.rb,v 1.21 2006/07/29 01:55:31 tilman Exp $
+
+class PlaylistItem
+       attr_reader :id, :edje, :position, :selected, :hilighted
+
+       def initialize(id, xmms, playlist)
+               @id = id
+               @position = playlist.size
+
+               @xmms = xmms
+               @playlist = playlist
+
+               @edje = nil
+               @height = 0
+               @selected = false
+               @hilighted = false
+
+               @props = {}
+
+               @xmms.medialib_get_info(id).notifier do |res|
+                       self.properties = res.value
+               end
+       end
+
+       def method_missing(method)
+               @props[method] || "unknown #{method}"
+       end
+
+       def duration
+               @props[:duration].to_i / 1000
+       end
+
+       def show(eet)
+               @edje = Edje::Edje.new(@playlist.container.evas)
+               @edje.load(eet, "playlist_item")
+               w, @height = @edje.get_size_min
+
+               set_parts_text
+
+               w, h = @edje.get_size_min
+               @edje.resize(w, h)
+
+               @playlist.container.append_element(@edje)
+
+               self.selected = @selected
+
+               @edje.on_signal("playlist_item.selected") do |sig, src|
+                       next if src == "Euphoria"
+
+                       @playlist.each do |item|
+                               item.selected = (item == self)
+                       end
+               end
+
+               @edje.on_signal("playlist_item.hilighted") do |sig, src|
+                       next if src == "Euphoria"
+
+                       @playlist.each do |item|
+                               item.hilighted = (item == self)
+                       end
+               end
+
+               @edje.on_signal("playlist_item.play") do
+                       @xmms.playlist_set_next(@position).wait
+                       @xmms.playback_tickle.wait
+                       @xmms.playback_start.wait
+               end
+
+               @edje.on_signal("PLAYLIST_SCROLL_UP", "") do
+                       @playlist.container.scroll(h * 3)
+               end
+
+               @edje.on_signal("PLAYLIST_SCROLL_DOWN", "") do
+                       @playlist.container.scroll(h * -3)
+               end
+       end
+
+       def hilighted=(b)
+               @hilighted = b
+
+               sig = b ? "hilighted" : "unhilighted"
+               unless @edje.nil?
+                       @edje.emit_signal("playlist_item.#{sig}", "Euphoria")
+               end
+       end
+
+       def selected=(b)
+               @selected = b
+
+               sig = b ? "selected" : "unselected"
+               unless @edje.nil?
+                       @edje.emit_signal("playlist_item.#{sig}", "Euphoria")
+               end
+       end
+
+       def visible?
+               # since we don't actually hide the edje, but just delete it,
+               # we don't need to check @edje.visible? here
+               !@edje.nil?
+       end
+
+       def hide
+               @playlist.container.remove_element(@edje)
+               @edje.delete
+               @edje = nil
+       end
+
+       def properties=(hash)
+               @props = hash || {}
+
+               set_parts_text unless @edje.nil?
+       end
+
+       def position=(pos)
+               @position = pos
+               set_parts_text unless @edje.nil?
+       end
+
+       private
+       def set_parts_text
+               tmp = (duration == -1) ? "" :
+                     ("%i:%02i" % [duration / 60, duration % 60])
+               @edje.part("duration").text = tmp
+               @edje.part("title").text = "%i %s - %s" % [@position + 1, artist, title]
+       end
+end
diff --git a/lib/playtime_updater.rb b/lib/playtime_updater.rb
new file mode 100644 (file)
index 0000000..7d3e570
--- /dev/null
@@ -0,0 +1,40 @@
+# $Id: playtime_updater.rb,v 1.4 2005/07/07 16:33:55 tsauerbeck Exp $
+
+class PlaytimeUpdater
+       INTERVAL = 0.25
+
+       def initialize(xmms, &block)
+               @xmms = xmms
+               @block = block
+               @timer = nil
+               @current_pos = nil
+
+               on_timer
+       end
+
+       def enabled=(v)
+        if !v && !@timer.nil?
+                       @timer.delete
+                       @timer = nil
+               elsif v
+                       @current_pos = nil
+                       on_timer
+
+            @timer = Ecore::Timer.new(INTERVAL) do
+                               on_timer
+                               true
+                       end
+        end
+       end
+
+       private
+       def on_timer
+               pltime = @xmms.playback_playtime.wait.value
+               cur_pos = pltime / 1000
+
+               if @current_pos != cur_pos
+                       @current_pos = cur_pos
+                       @block.call(@current_pos)
+               end
+       end
+end
diff --git a/lib/slider.rb b/lib/slider.rb
new file mode 100644 (file)
index 0000000..f05de0f
--- /dev/null
@@ -0,0 +1,93 @@
+# $Id: slider.rb,v 1.3 2006/05/13 14:59:17 tilman Exp $
+
+class Slider
+       def initialize(edje, xmms, part, config)
+               @edje = edje
+               @xmms = xmms
+               @part = part
+               @config = config
+               @val = nil
+
+               self.value = @xmms.configval_get(config).wait.value
+
+               @edje.on_signal("drag", @part) do
+                       v = on_drag(@edje.part(@part).get_drag_value)
+                       @xmms.configval_set(@config, v).wait unless v.nil?
+               end
+       end
+
+       def value=(v)
+       end
+
+protected
+       def on_drag(d)
+       end
+end
+
+class VolumeSlider < Slider
+       attr_reader :part, :config
+
+       def initialize(edje, xmms, part)
+               @edje = edje
+               @xmms = xmms
+               @part = part
+               @val = nil
+
+               self.value = @xmms.playback_volume_get.wait.value
+
+               @edje.on_signal("drag", @part) do
+                       v = on_drag(@edje.part(@part).get_drag_value)
+
+                       unless v.nil?
+                               @xmms.playback_volume_set("left", v).wait
+                               @xmms.playback_volume_set("right", v).wait
+                       end
+               end
+       end
+
+       def value=(v)
+               v = (1.0 - (v[:left].to_f / 100.0)).abs
+
+               if !@val || @val != v
+                       @val = v
+                       @edje.part(@part).set_drag_value(0.1, v)
+               end
+       end
+
+       def on_drag(d)
+               ret = nil
+               v = (1.0 - d[1]).abs
+
+               if @val != v
+                       @val = v
+                       ret = (v * 100).to_i
+               end
+
+               ret
+       end
+end
+
+class EqSlider < Slider
+       attr_reader :part, :config
+
+       def value=(v)
+               v = (1.0 - v.to_f).abs
+
+               if !@val || @val != v
+                       @val = v
+                       @edje.part(@part).set_drag_value(0.1, v)
+               end
+       end
+
+       def on_drag(d)
+               ret = nil
+               v = (1.0 - d[1]).abs
+
+               if @val != v
+                       @val = v
+                       ret = v.to_s
+               end
+
+               ret
+       end
+end
diff --git a/lib/volume_box.rb b/lib/volume_box.rb
new file mode 100644 (file)
index 0000000..0cb1afc
--- /dev/null
@@ -0,0 +1,42 @@
+# $Id: volume_box.rb,v 1.1 2006/07/29 02:07:04 tilman Exp $
+
+class VolumeBox
+       def initialize(edje, xmms, part)
+               @edje = edje
+               @xmms = xmms
+               @part = part
+
+               self.value = @xmms.playback_volume_get.wait.value
+
+               @edje.on_signal("VOL_INCR") do
+                       unless @vol[:left] == 100
+                               tmp = @vol[:left] + 1
+                               @xmms.playback_volume_set("left", tmp).wait
+                       end
+
+                       unless @vol[:right] == 100
+                               tmp = @vol[:right] + 1
+                               @xmms.playback_volume_set("right", tmp).wait
+                       end
+               end
+
+               @edje.on_signal("VOL_DECR") do
+                       unless @vol[:left] == 0
+                               tmp = @vol[:left] - 1
+                               @xmms.playback_volume_set("left", tmp).wait
+                       end
+
+                       unless @vol[:right] == 0
+                               tmp = @vol[:right] - 1
+                               @xmms.playback_volume_set("right", tmp).wait
+                       end
+               end
+       end
+
+       def value=(v)
+               unless v.nil?
+                       @vol = v
+                       @edje.part("vol_display_text").text = v[:left].to_s
+               end
+       end
+end