ampv 1.1.3 → 1.2.0
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/ampv.rb +20 -32
- data/lib/ampv/mpvwidget.rb +10 -11
- data/lib/ampv/playlist.rb +10 -6
- data/lib/ampv/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4cd792f9c7d994f5be1035bcbced7c95df683908
|
4
|
+
data.tar.gz: a16d8998f82dfd65d0611ee602447adbc6fb6c95
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d5c646276dece49053e5ee73dceb67c2de4ce4485ba014c261701798ea9234ce66b68e23f970703e5d2c79ee5c9f7b14c2f3592be418611badfdb8239622747d
|
7
|
+
data.tar.gz: 8d0e88a8409d93bf33271abf62ca452af5e6296e47d5310007dad00e069e731a04c6284c1bf7772bf91acf7f19848c4bfa0f53599a13ea4d09dfaea8dd8b6170
|
data/lib/ampv.rb
CHANGED
@@ -19,9 +19,6 @@ module Ampv
|
|
19
19
|
Gdk::EventScroll::RIGHT => 7
|
20
20
|
}
|
21
21
|
|
22
|
-
LEFT_PTR = Gdk::Cursor.new(Gdk::Cursor::LEFT_PTR)
|
23
|
-
BLANK_CURSOR = Gdk::Cursor.new(Gdk::Cursor::BLANK_CURSOR)
|
24
|
-
|
25
22
|
def initialize
|
26
23
|
unless defined?(MpvWidget::PATH)
|
27
24
|
dlg = Gtk::MessageDialog.new(nil,
|
@@ -60,6 +57,7 @@ module Ampv
|
|
60
57
|
files = sd.uris.map { |f| URI.decode(f).sub(/^file:\/\/[^\/]*/, "") }
|
61
58
|
@playlist.clear(true) unless @playlist.get_files & files == files
|
62
59
|
load_files(files)
|
60
|
+
present
|
63
61
|
Gtk::Drag.finish(dc, true, false, time)
|
64
62
|
}
|
65
63
|
signal_connect("motion_notify_event") { mouse_cursor_timeout }
|
@@ -68,22 +66,10 @@ module Ampv
|
|
68
66
|
@mpv = MpvWidget.new(args)
|
69
67
|
@progress_bar = ProgressBarWidget.new
|
70
68
|
@playlist = Playlist.new
|
71
|
-
@ignore_stop = false
|
72
69
|
|
73
70
|
@mpv.signal_connect("file_changed") { |w, file|
|
74
71
|
@playing = URI.decode(file).sub(/^file:\/\/[^\/]*/, "")
|
75
|
-
|
76
|
-
unless @playlist.include?(@playing)
|
77
|
-
@playlist.clear(true)
|
78
|
-
if (file = create_playlist(@playing)) != @playing and File.directory?(@playing)
|
79
|
-
@playing = file
|
80
|
-
GLib::Idle.add { @mpv.load_file(@playing); false }
|
81
|
-
# mpv will fail to play the directory and then stop
|
82
|
-
# ignore the next stop event so the playlist does not advance
|
83
|
-
@ignore_stop = true
|
84
|
-
end
|
85
|
-
end
|
86
|
-
@mpv.send("show_text ${media-title} 1500") if window.state.fullscreen? and !@ignore_stop
|
72
|
+
@mpv.send("show_text ${media-title} 1500") if window.state.fullscreen?
|
87
73
|
@playlist.set_selected(@playing)
|
88
74
|
set_title(File.basename(@playing))
|
89
75
|
}
|
@@ -93,22 +79,21 @@ module Ampv
|
|
93
79
|
@mpv.signal_connect("stopped") {
|
94
80
|
@progress_bar.value = 0
|
95
81
|
set_title(PACKAGE)
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
toggle_fullscreen if window.state.fullscreen?
|
104
|
-
end
|
82
|
+
next_file = @playlist.get_next
|
83
|
+
@really_stop ||= next_file.nil?
|
84
|
+
if !@really_stop
|
85
|
+
@mpv.load_file(next_file)
|
86
|
+
else
|
87
|
+
@playlist.playing_stopped
|
88
|
+
toggle_fullscreen if window.state.fullscreen?
|
105
89
|
end
|
106
|
-
@really_stop =
|
90
|
+
@really_stop = false
|
107
91
|
}
|
108
92
|
|
109
93
|
@playlist.signal_connect("open_file_chooser") { open_file_chooser }
|
110
94
|
@playlist.signal_connect("drag_data_received") { |w, dc, x, y, sd, type, time|
|
111
95
|
sd.uris.each { |f| @playlist.add_file(URI.decode(f).sub(/^file:\/\/[^\/]*/, "")) }
|
96
|
+
present
|
112
97
|
Gtk::Drag.finish(dc, true, false, time)
|
113
98
|
}
|
114
99
|
@playlist.signal_connect("play_entry") { |w, file| @mpv.load_file(file, true) }
|
@@ -178,10 +163,12 @@ module Ampv
|
|
178
163
|
end
|
179
164
|
|
180
165
|
def handle_mouse_event(e)
|
166
|
+
if e.event_type != Gdk::Event::MOTION_NOTIFY
|
167
|
+
button = e.event_type == Gdk::Event::SCROLL ? WHEEL_BUTTONS[e.direction] : e.button
|
168
|
+
return if Config["mouse_bindings"][e.event_type].nil?
|
169
|
+
process_cmd(Config["mouse_bindings"][e.event_type][button])
|
170
|
+
end
|
181
171
|
mouse_cursor_timeout
|
182
|
-
button = e.event_type == Gdk::Event::SCROLL ? WHEEL_BUTTONS[e.direction] : e.button
|
183
|
-
return if Config["mouse_bindings"][e.event_type].nil?
|
184
|
-
process_cmd(Config["mouse_bindings"][e.event_type][button])
|
185
172
|
end
|
186
173
|
|
187
174
|
def handle_keyboard_event(e)
|
@@ -196,11 +183,12 @@ module Ampv
|
|
196
183
|
end
|
197
184
|
|
198
185
|
def mouse_cursor_timeout
|
199
|
-
window.set_cursor(
|
186
|
+
window.set_cursor(nil)
|
200
187
|
GLib::Source.remove(@cursor_timeout) if @cursor_timeout
|
201
188
|
@cursor_timeout = GLib::Timeout.add(1000) {
|
202
|
-
window.set_cursor(BLANK_CURSOR)
|
203
|
-
|
189
|
+
window.set_cursor(Gdk::Cursor.new(Gdk::Cursor::BLANK_CURSOR)) unless @mpv.is_paused
|
190
|
+
false
|
191
|
+
}
|
204
192
|
end
|
205
193
|
|
206
194
|
def process_cmd(cmd)
|
data/lib/ampv/mpvwidget.rb
CHANGED
@@ -31,16 +31,12 @@ module Ampv
|
|
31
31
|
@is_paused = true
|
32
32
|
|
33
33
|
super()
|
34
|
-
signal_connect("realize") { start }
|
35
34
|
|
36
|
-
@
|
37
|
-
@
|
38
|
-
@
|
39
|
-
signal_emit("stopped")
|
40
|
-
@is_stopped = true
|
41
|
-
}
|
35
|
+
@widget = Gtk::DrawingArea.new
|
36
|
+
@widget.modify_bg(Gtk::STATE_NORMAL, Gdk::Color.parse("#000"))
|
37
|
+
@widget.signal_connect("realize") { start }
|
42
38
|
|
43
|
-
add(@
|
39
|
+
add(@widget)
|
44
40
|
end
|
45
41
|
|
46
42
|
def send(cmd)
|
@@ -81,13 +77,13 @@ module Ampv
|
|
81
77
|
--cursor-autohide=no \
|
82
78
|
--no-mouse-movements \
|
83
79
|
--msglevel=all=info \
|
84
|
-
--wid=#{@
|
80
|
+
--wid=#{@widget.window.xid} #{@mpv_options}"
|
85
81
|
|
86
82
|
@thread = Thread.start {
|
87
83
|
IO.popen(cmd) { |io|
|
88
84
|
io.each { |line|
|
89
85
|
line.chomp!
|
90
|
-
if line.
|
86
|
+
if line.start_with?("Playing: ")
|
91
87
|
signal_emit("file_changed", (@playing = line.partition("Playing: ")[-1]))
|
92
88
|
send("get_property length")
|
93
89
|
send("get_property time-pos")
|
@@ -102,6 +98,9 @@ module Ampv
|
|
102
98
|
play_pause if @force_play and @is_paused
|
103
99
|
elsif line.start_with?("ANS_time-pos=")
|
104
100
|
signal_emit("time_pos_changed", line.rpartition("=")[-1].to_f)
|
101
|
+
elsif line == "Creating non-video VO window."
|
102
|
+
signal_emit("stopped")
|
103
|
+
@is_stopped = true
|
105
104
|
end
|
106
105
|
|
107
106
|
puts(line) if @debug and !line.start_with?("ANS_")
|
@@ -114,7 +113,7 @@ module Ampv
|
|
114
113
|
scrobbled = false
|
115
114
|
watched = 0
|
116
115
|
loop {
|
117
|
-
send("get_property time-pos")
|
116
|
+
send("get_property time-pos")
|
118
117
|
unless scrobbled or watched < @length * 0.5
|
119
118
|
system("#{Config["scrobbler"]} \"#{@playing}\"") if Config["scrobbler"]
|
120
119
|
signal_emit("playing_watched")
|
data/lib/ampv/playlist.rb
CHANGED
@@ -42,11 +42,11 @@ module Ampv
|
|
42
42
|
vbox.border_width = 10
|
43
43
|
sw.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC)
|
44
44
|
|
45
|
-
@treeview.
|
46
|
-
@treeview.
|
47
|
-
@treeview.
|
48
|
-
@treeview.
|
49
|
-
@treeview.
|
45
|
+
@treeview.set_enable_search (false)
|
46
|
+
@treeview.set_rubber_banding(true)
|
47
|
+
@treeview.set_reorderable(true)
|
48
|
+
@treeview.set_tooltip_column(0)
|
49
|
+
@treeview.selection.set_mode(Gtk::SELECTION_MULTIPLE)
|
50
50
|
|
51
51
|
@treeview.signal_connect("row_activated") { |w, p, c|
|
52
52
|
signal_emit("play_entry", @model.get_iter(p)[0])
|
@@ -55,7 +55,11 @@ module Ampv
|
|
55
55
|
remove_selected if e.keyval == Gdk::Keyval::GDK_Delete
|
56
56
|
}
|
57
57
|
@treeview.signal_connect("button_press_event") { |w, e|
|
58
|
-
|
58
|
+
if e.event_type == Gdk::Event::BUTTON_PRESS and e.button == 3
|
59
|
+
path = @treeview.get_path(e.x, e.y)[0]
|
60
|
+
@treeview.set_cursor(path, nil, false) if path
|
61
|
+
@menu.popup(nil, nil, e.button, e.time)
|
62
|
+
end
|
59
63
|
}
|
60
64
|
|
61
65
|
["Name", "Length"].each_with_index { |x, i|
|
data/lib/ampv/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ampv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ahoka
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gtk2
|
@@ -62,9 +62,9 @@ files:
|
|
62
62
|
- LICENSE
|
63
63
|
- input.conf
|
64
64
|
- lib/ampv/mpvwidget.rb
|
65
|
-
- lib/ampv/playlist.rb
|
66
65
|
- lib/ampv/progressbarwidget.rb
|
67
66
|
- lib/ampv/config.rb
|
67
|
+
- lib/ampv/playlist.rb
|
68
68
|
- lib/ampv/version.rb
|
69
69
|
- lib/ampv.rb
|
70
70
|
- bin/ampv
|