ektoplayer 0.1.12 → 0.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/ektoplayer/application.rb +49 -19
- data/lib/ektoplayer/bindings.rb +91 -87
- data/lib/ektoplayer/browsepage.rb +14 -27
- data/lib/ektoplayer/common.rb +12 -67
- data/lib/ektoplayer/compat.rb +5 -11
- data/lib/ektoplayer/config.rb +52 -17
- data/lib/ektoplayer/controllers/browser.rb +10 -5
- data/lib/ektoplayer/database.rb +7 -20
- data/lib/ektoplayer/download/externaldownload.rb +65 -0
- data/lib/ektoplayer/download/rubydownload.rb +69 -0
- data/lib/ektoplayer/icurses/curses.rb +18 -2
- data/lib/ektoplayer/icurses/{ffi_ncurses.rb → ffi-ncurses.rb} +1 -0
- data/lib/ektoplayer/icurses/ncurses.rb +10 -0
- data/lib/ektoplayer/icurses.rb +13 -5
- data/lib/ektoplayer/models/browser.rb +11 -11
- data/lib/ektoplayer/models/player.rb +4 -5
- data/lib/ektoplayer/operations/browser.rb +9 -1
- data/lib/ektoplayer/operations/playlist.rb +1 -1
- data/lib/ektoplayer/players/mpg_wrapper_player.rb +98 -40
- data/lib/ektoplayer/theme.rb +78 -63
- data/lib/ektoplayer/trackloader.rb +25 -74
- data/lib/ektoplayer/ui/colors.rb +33 -5
- data/lib/ektoplayer/ui/widgets/container.rb +1 -1
- data/lib/ektoplayer/ui/widgets/listwidget.rb +35 -34
- data/lib/ektoplayer/ui/widgets.rb +19 -0
- data/lib/ektoplayer/ui.rb +22 -23
- data/lib/ektoplayer/updater.rb +3 -4
- data/lib/ektoplayer/views/browser.rb +7 -2
- data/lib/ektoplayer/views/help.rb +5 -2
- data/lib/ektoplayer/views/info.rb +22 -27
- data/lib/ektoplayer/views/playinginfo.rb +20 -19
- data/lib/ektoplayer/views/playlist.rb +8 -3
- data/lib/ektoplayer/views/progressbar.rb +26 -33
- data/lib/ektoplayer/views/splash.rb +14 -22
- data/lib/ektoplayer/views/trackrenderer.rb +14 -10
- metadata +7 -5
@@ -4,14 +4,12 @@ require_relative '../theme'
|
|
4
4
|
|
5
5
|
module Ektoplayer
|
6
6
|
module Views
|
7
|
-
class ProgressBar < UI::
|
7
|
+
class ProgressBar < UI::Pad
|
8
8
|
def layout
|
9
9
|
super
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
def load_colors(force=false)
|
14
|
-
return if @fade and not force
|
10
|
+
self.pad_size=(UI::Size.new(
|
11
|
+
height: 1, width: @size.width * 2
|
12
|
+
))
|
15
13
|
|
16
14
|
if Theme.current == 256
|
17
15
|
fader = UI::ColorFader.new([25,26,27,32,39,38,44,44,45,51,87,159,195])
|
@@ -21,49 +19,44 @@ module Ektoplayer
|
|
21
19
|
fader = UI::ColorFader.new([-1])
|
22
20
|
end
|
23
21
|
|
24
|
-
|
25
|
-
|
26
|
-
@
|
27
|
-
@rest_char = Config[:'progressbar.rest_char']
|
28
|
-
end
|
22
|
+
progress_char = Config[:'progressbar.progress_char']
|
23
|
+
|
24
|
+
@win.move(0,0)
|
29
25
|
|
26
|
+
fader.fade(@size.width).each do |c|
|
27
|
+
@win.attron(c)
|
28
|
+
@win.addstr(progress_char)
|
29
|
+
end
|
30
|
+
|
31
|
+
@win.attron(Theme[:'progressbar.rest'])
|
32
|
+
@win << Config[:'progressbar.rest_char'] * @size.width
|
33
|
+
end
|
30
34
|
|
31
35
|
def attach(player)
|
32
36
|
player.events.on(:position_change) do
|
33
|
-
|
37
|
+
old = @progress_width
|
38
|
+
@progress_width = @size.width - (player.position_percent * @size.width).to_i rescue 0
|
39
|
+
|
40
|
+
if (old != @progress_width) and visible?
|
41
|
+
@pad_mincol = (@progress_width)
|
42
|
+
refresh
|
43
|
+
end
|
34
44
|
end
|
35
45
|
|
36
46
|
view=self # TODO
|
37
47
|
[ICurses::BUTTON1_CLICKED, ICurses::BUTTON2_CLICKED, ICurses::BUTTON3_CLICKED].
|
38
48
|
each do |button|
|
39
49
|
view.mouse.on(button) do |mevent|
|
40
|
-
|
50
|
+
x = mevent.x - @pad_mincol
|
51
|
+
pos = Float(x) / (self.size.width - 1) * player.length rescue player.position
|
41
52
|
player.seek(pos.to_i)
|
53
|
+
@progress_width = x
|
54
|
+
self.pad_mincol=(@size.width - @progress_width)
|
42
55
|
end
|
43
56
|
end
|
44
57
|
end
|
45
58
|
|
46
|
-
def percent_playing=(percent_playing)
|
47
|
-
char_width = (percent_playing * @size.width).to_i
|
48
|
-
return if char_width == @progress_width
|
49
|
-
|
50
|
-
with_lock do
|
51
|
-
@progress_width = char_width
|
52
|
-
want_redraw
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
59
|
def draw
|
57
|
-
load_colors
|
58
|
-
@win.move(0,0)
|
59
|
-
|
60
|
-
@progress_width.times do |i|
|
61
|
-
@win.attron(@fade[i])
|
62
|
-
@win << @progress_char
|
63
|
-
end
|
64
|
-
|
65
|
-
@win.attron(Theme[:'progressbar.rest'])
|
66
|
-
@win << @rest_char * (@size.width - @win.curx)
|
67
60
|
end
|
68
61
|
end
|
69
62
|
end
|
@@ -25,28 +25,20 @@ module Ektoplayer
|
|
25
25
|
|___/\___/\_,_|_||_\__,_| |____|_|_.__/\___|_| \__,_|\__|_\___/_||_|}.
|
26
26
|
split(?\n)[1..-1].freeze
|
27
27
|
|
28
|
-
BUBBLES = [
|
29
|
-
UI::Point.new(x: 6, y: 3).freeze, UI::Point.new(x: 6, y: 7).freeze,
|
30
|
-
UI::Point.new(x: 28, y: 1).freeze, UI::Point.new(x: 28, y: 9).freeze,
|
31
|
-
UI::Point.new(x: 46, y: 7).freeze, UI::Point.new(x: 71, y: 9).freeze
|
32
|
-
].freeze
|
28
|
+
BUBBLES = [[6,3], [6,7], [28,1], [28,9], [46,7], [71,9]].freeze
|
33
29
|
|
34
30
|
def load_colors
|
35
|
-
signature_fade = ekto_logo_fade = bubble_fade = [-1].freeze
|
36
|
-
|
37
31
|
if Theme.current == 256
|
38
|
-
bubble_fade = [168,167,161,161,161]
|
39
|
-
signature_fade = [99, 105, 111, 117]
|
40
|
-
ekto_logo_fade = [23, 23, 29, 36, 42, 48, 42, 36, 29, 23]
|
32
|
+
@bubble_fade = UI::ColorFader.new([168,167,161,161,161])
|
33
|
+
@signature_fade = UI::ColorFader.new([99, 105, 111, 117])
|
34
|
+
@ekto_logo_fade = UI::ColorFader.new([23, 23, 29, 36, 42, 48, 42, 36, 29, 23])
|
41
35
|
elsif Theme.current == 8
|
42
|
-
bubble_fade = [:red]
|
43
|
-
ekto_logo_fade = [:blue]
|
44
|
-
signature_fade = [:magenta]
|
36
|
+
@bubble_fade = UI::ColorFader.new([:red])
|
37
|
+
@ekto_logo_fade = UI::ColorFader.new([:blue])
|
38
|
+
@signature_fade = UI::ColorFader.new([:magenta])
|
39
|
+
else
|
40
|
+
@bubble_fade = @signature_fade = @ekto_logo_fade = UI::ColorFader.new([-1])
|
45
41
|
end
|
46
|
-
|
47
|
-
@bubble_fade = UI::ColorFader.new(bubble_fade)
|
48
|
-
@signature_fade = UI::ColorFader.new(signature_fade)
|
49
|
-
@ekto_logo_fade = UI::ColorFader.new(ekto_logo_fade)
|
50
42
|
end
|
51
43
|
|
52
44
|
def draw
|
@@ -73,11 +65,11 @@ module Ektoplayer
|
|
73
65
|
end
|
74
66
|
|
75
67
|
f = @bubble_fade.fade(EKTOPLAZM_LOGO.size)
|
76
|
-
BUBBLES.each do |
|
77
|
-
@win.attrset(f[
|
78
|
-
@win.mvaddstr(top_pad +
|
79
|
-
@win.attrset(f[
|
80
|
-
@win.mvaddstr(top_pad +
|
68
|
+
BUBBLES.each do |x,y|
|
69
|
+
@win.attrset(f[y - 1])
|
70
|
+
@win.mvaddstr(top_pad + y - 1, left_pad + x + 1, ?_)
|
71
|
+
@win.attrset(f[y])
|
72
|
+
@win.mvaddstr(top_pad + y, left_pad + x, '(_)')
|
81
73
|
end
|
82
74
|
|
83
75
|
return unless draw_signature
|
@@ -98,7 +98,7 @@ module Ektoplayer
|
|
98
98
|
additional_attributes |= ICurses::A_BOLD if marked
|
99
99
|
additional_attributes |= ICurses::A_STANDOUT if selected
|
100
100
|
|
101
|
-
if item.is_a? String or item.is_a? Symbol
|
101
|
+
if item.is_a? String or item.is_a? Symbol or item.is_a? Integer
|
102
102
|
if selection
|
103
103
|
color = Theme[:'list.item_selection']
|
104
104
|
elsif index % 2 == 0
|
@@ -112,9 +112,10 @@ module Ektoplayer
|
|
112
112
|
return
|
113
113
|
end
|
114
114
|
|
115
|
-
|
116
|
-
|
115
|
+
left_pad = 0
|
116
|
+
y = scr.cury
|
117
117
|
|
118
|
+
@column_format.each_with_index do |c,i|
|
118
119
|
if selection
|
119
120
|
scr.attrset(Theme[:'list.item_selection'] | additional_attributes)
|
120
121
|
else
|
@@ -122,22 +123,25 @@ module Ektoplayer
|
|
122
123
|
end
|
123
124
|
|
124
125
|
if value = item[c[:tag]]
|
125
|
-
if value.is_a?
|
126
|
-
value =
|
126
|
+
if value.is_a? Integer
|
127
|
+
value = '%.2d' % value
|
127
128
|
else
|
128
129
|
value = value.to_s[0..(c[:render_size] - 1)]
|
129
130
|
end
|
130
131
|
|
132
|
+
scr.mvaddstr(y, left_pad, ' ' * c[:render_size])
|
133
|
+
scr.addch(32) if i < @column_format.size - 1
|
134
|
+
|
131
135
|
if c[:justify] == :right
|
132
|
-
scr.
|
136
|
+
scr.mvaddstr(y, left_pad, value.rjust(c[:render_size]))
|
133
137
|
else
|
134
|
-
scr.
|
138
|
+
scr.mvaddstr(y, left_pad, value)
|
135
139
|
end
|
136
|
-
else
|
137
|
-
scr.addstr(' ' * c[:render_size])
|
138
140
|
end
|
141
|
+
|
142
|
+
left_pad += c[:render_size] + 1
|
139
143
|
end
|
140
144
|
end
|
141
|
-
end
|
145
|
+
end
|
142
146
|
end
|
143
147
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ektoplayer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Benjamin Abendroth
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sqlite3
|
@@ -64,10 +64,12 @@ files:
|
|
64
64
|
- lib/ektoplayer/controllers/mainwindow.rb
|
65
65
|
- lib/ektoplayer/controllers/playlist.rb
|
66
66
|
- lib/ektoplayer/database.rb
|
67
|
+
- lib/ektoplayer/download/externaldownload.rb
|
68
|
+
- lib/ektoplayer/download/rubydownload.rb
|
67
69
|
- lib/ektoplayer/events.rb
|
68
70
|
- lib/ektoplayer/icurses.rb
|
69
71
|
- lib/ektoplayer/icurses/curses.rb
|
70
|
-
- lib/ektoplayer/icurses/
|
72
|
+
- lib/ektoplayer/icurses/ffi-ncurses.rb
|
71
73
|
- lib/ektoplayer/icurses/ncurses.rb
|
72
74
|
- lib/ektoplayer/icurses/ncursesw.rb
|
73
75
|
- lib/ektoplayer/icurses/sugar.rb
|
@@ -123,8 +125,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
123
125
|
- !ruby/object:Gem::Version
|
124
126
|
version: '0'
|
125
127
|
requirements:
|
126
|
-
- '
|
127
|
-
- '
|
128
|
+
- 'Playback: /bin/mpg123 or the "audite-lib" gem'
|
129
|
+
- 'Archive unpacking: /bin/unzip, /bin/7z or the "rubyzip" gem'
|
128
130
|
- 'One of these curses-gems: ffi-ncurses, ncurses, ncursesw, curses'
|
129
131
|
rubyforge_project:
|
130
132
|
rubygems_version: 2.6.8
|