ampv 1.1.1 → 1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +6 -14
- data/lib/ampv.rb +37 -29
- data/lib/ampv/playlist.rb +14 -0
- data/lib/ampv/version.rb +1 -1
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
NDMyMTlkZDc0NTk5YTIzOGRjOGJhZDRkYzlkNjFiM2NkYzI2ZGY2MGE5ZTBk
|
10
|
-
Mzc5YzkzYWQ0MGNjMDMxZTQyNzdlOGZhZjVhYmZiMzg2MDlmMTFmYjdjN2Jk
|
11
|
-
NTk0ZGU1ZWQ0MTg2MTZjZjc5OWQ2MmZkMjJhMWY5ODI1OTczNTU=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
YmYwZDRiYWQyNjg0NTM5Y2JkNGY5NzZjY2Y4MjVmOGI3ODRjOWQyMzU0MmEx
|
14
|
-
MWUwZjEwZDdlZWVlMTEwZTc2OTFmMWY0MzI4YTc5OTFmYmI2NjVhYzlhMTVi
|
15
|
-
MDY0N2MxMzI2MTY5MTAxMGNkMWI5YTE3ZDBlOWM2NDFlZGQ2YmM=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 67bcc7597fa24e08ca81a50a2bbb810a95fcf937
|
4
|
+
data.tar.gz: 67c22c9f18bacff3c12a077242db957868967a7a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8311e6dd3454d64619ca7a9f81822f30cd85250e60275d85079b3217fe2c26793e4e822d304c6e1a695892fb590189f9d50764196fd30d1b409011bb952337be
|
7
|
+
data.tar.gz: bdcdcf12923d80c54a19022e7463ea6e2dc80758b789f1f29f5975cf33ec5cdc20c3fb44dc7450121dd8dcb66135d9d58c69281c57dd1f4bfc959e74d92c5c05
|
data/lib/ampv.rb
CHANGED
@@ -57,7 +57,9 @@ module Ampv
|
|
57
57
|
signal_connect("button_press_event") { |w, e| handle_mouse_event(e) }
|
58
58
|
signal_connect("key_press_event") { |w, e| handle_keyboard_event(e) }
|
59
59
|
signal_connect("drag_data_received") { |w, dc, x, y, sd, type, time|
|
60
|
-
|
60
|
+
files = sd.uris.map { |f| URI.decode(f).sub(/^file:\/\/[^\/]*/, "") }
|
61
|
+
@playlist.clear(true) unless @playlist.get_files & files == files
|
62
|
+
load_files(files)
|
61
63
|
Gtk::Drag.finish(dc, true, false, time)
|
62
64
|
}
|
63
65
|
signal_connect("motion_notify_event") { mouse_cursor_timeout }
|
@@ -95,7 +97,7 @@ module Ampv
|
|
95
97
|
next_file = @playlist.get_next
|
96
98
|
@really_stop ||= next_file.nil?
|
97
99
|
if !@really_stop
|
98
|
-
load_file(next_file
|
100
|
+
@mpv.load_file(next_file)
|
99
101
|
elsif window.state.fullscreen?
|
100
102
|
toggle_fullscreen
|
101
103
|
end
|
@@ -105,10 +107,10 @@ module Ampv
|
|
105
107
|
|
106
108
|
@playlist.signal_connect("open_file_chooser") { open_file_chooser }
|
107
109
|
@playlist.signal_connect("drag_data_received") { |w, dc, x, y, sd, type, time|
|
108
|
-
|
110
|
+
sd.uris.each { |f| @playlist.add_file(URI.decode(f).sub(/^file:\/\/[^\/]*/, "")) }
|
109
111
|
Gtk::Drag.finish(dc, true, false, time)
|
110
112
|
}
|
111
|
-
@playlist.signal_connect("play_entry") { |w, file| load_file(file,
|
113
|
+
@playlist.signal_connect("play_entry") { |w, file| @mpv.load_file(file, true) }
|
112
114
|
@playlist.signal_connect("playing_removed") { @mpv.stop; @really_stop = true }
|
113
115
|
|
114
116
|
Gtk::Drag.dest_set(@playlist, Gtk::Drag::DEST_DEFAULT_ALL,
|
@@ -125,9 +127,9 @@ module Ampv
|
|
125
127
|
|
126
128
|
if !files.empty?
|
127
129
|
if files.length > 1
|
128
|
-
files
|
130
|
+
load_files(files)
|
129
131
|
else
|
130
|
-
load_file(files[0])
|
132
|
+
load_file(files[0], false)
|
131
133
|
end
|
132
134
|
elsif Config["playlist"].length > 0
|
133
135
|
Config["playlist"].each { |x| @playlist.add_file(x["file"], x["length"], x["watched"]) }
|
@@ -142,19 +144,32 @@ module Ampv
|
|
142
144
|
end
|
143
145
|
|
144
146
|
private
|
145
|
-
def load_file(file,
|
146
|
-
|
147
|
-
|
147
|
+
def load_file(file, auto_add = true, play = true)
|
148
|
+
if file =~ /^#{URI::regexp}$/
|
149
|
+
uri = true
|
150
|
+
else
|
151
|
+
file = File.expand_path(file)
|
152
|
+
end
|
148
153
|
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
154
|
+
return unless File.directory?(file) or valid_video_file?(file) or uri
|
155
|
+
|
156
|
+
if @playlist.count == 0 and auto_add
|
157
|
+
file = create_playlist(file)
|
158
|
+
elsif !@playlist.include?(file)
|
159
|
+
@playlist.add_file(file)
|
155
160
|
end
|
156
161
|
|
157
|
-
@mpv.load_file(file
|
162
|
+
@mpv.load_file(file) if play
|
163
|
+
end
|
164
|
+
|
165
|
+
def load_files(files)
|
166
|
+
if files.length == 1
|
167
|
+
load_file(files[0])
|
168
|
+
else
|
169
|
+
files.each_with_index { |x, i|
|
170
|
+
load_file(x, false, i == 0)
|
171
|
+
}
|
172
|
+
end
|
158
173
|
end
|
159
174
|
|
160
175
|
def create_playlist(file)
|
@@ -183,11 +198,6 @@ module Ampv
|
|
183
198
|
end
|
184
199
|
end
|
185
200
|
|
186
|
-
def handle_drop_event(files, do_not_play, replace)
|
187
|
-
@playlist.clear if replace
|
188
|
-
files.each { |x| load_file(URI.decode(x).sub(/^file:\/\/[^\/]*/, ""), true, do_not_play) }
|
189
|
-
end
|
190
|
-
|
191
201
|
def mouse_cursor_timeout
|
192
202
|
window.set_cursor(LEFT_PTR)
|
193
203
|
GLib::Source.remove(@cursor_timeout) if @cursor_timeout
|
@@ -211,9 +221,11 @@ module Ampv
|
|
211
221
|
when /add chapter/
|
212
222
|
seek(cmd)
|
213
223
|
when "playlist_next"
|
214
|
-
|
224
|
+
file = @playlist.get_next
|
225
|
+
@mpv.load_file(file) if file
|
215
226
|
when "playlist_prev"
|
216
|
-
|
227
|
+
file = @playlist.get_prev
|
228
|
+
@mpv.load_file(file) if file
|
217
229
|
when "open_file_chooser"
|
218
230
|
open_file_chooser
|
219
231
|
when "cycle progress_bar"
|
@@ -256,10 +268,9 @@ module Ampv
|
|
256
268
|
end
|
257
269
|
|
258
270
|
def valid_video_file?(x)
|
259
|
-
return (x and File.exists?(x) and
|
271
|
+
return (x and File.exists?(x) and File.file?(x) and VIDEO_EXTS.include?(File.extname(x).downcase))
|
260
272
|
end
|
261
273
|
|
262
|
-
|
263
274
|
def open_file_chooser
|
264
275
|
dialog = Gtk::FileChooserDialog.new("Open File - #{PACKAGE}",
|
265
276
|
self, Gtk::FileChooser::ACTION_OPEN, nil,
|
@@ -277,10 +288,7 @@ module Ampv
|
|
277
288
|
filterAll.add_pattern("*.*")
|
278
289
|
dialog.add_filter(filterAll)
|
279
290
|
|
280
|
-
dialog.filenames.
|
281
|
-
do_not_play = @playlist.count > 0
|
282
|
-
load_file(x, true, do_not_play)
|
283
|
-
} if dialog.run == Gtk::Dialog::RESPONSE_ACCEPT
|
291
|
+
load_files(dialog.filenames) if dialog.run == Gtk::Dialog::RESPONSE_ACCEPT
|
284
292
|
dialog.destroy
|
285
293
|
end
|
286
294
|
|
data/lib/ampv/playlist.rb
CHANGED
@@ -7,6 +7,7 @@ module Ampv
|
|
7
7
|
signal_new("open_file_chooser", GLib::Signal::RUN_FIRST, nil, nil)
|
8
8
|
|
9
9
|
WATCHED_PIXBUF = Gtk::Invisible.new.render_icon(Gtk::Stock::OK, Gtk::IconSize::MENU)
|
10
|
+
PLAYING_PIXBUF = Gtk::Invisible.new.render_icon(Gtk::Stock::MEDIA_PLAY, Gtk::IconSize::MENU)
|
10
11
|
|
11
12
|
def initialize
|
12
13
|
buttons = {
|
@@ -114,6 +115,7 @@ module Ampv
|
|
114
115
|
|
115
116
|
def on_playing_watched
|
116
117
|
@playing_iter[2] = WATCHED_PIXBUF
|
118
|
+
@current_is_watched = true
|
117
119
|
end
|
118
120
|
|
119
121
|
def include?(file)
|
@@ -148,6 +150,12 @@ module Ampv
|
|
148
150
|
entries
|
149
151
|
end
|
150
152
|
|
153
|
+
def get_files
|
154
|
+
files = [ ]
|
155
|
+
@model.each { |m, p, iter| files << iter[0] }
|
156
|
+
files
|
157
|
+
end
|
158
|
+
|
151
159
|
def clear(quiet = false)
|
152
160
|
@model.clear
|
153
161
|
signal_emit("playing_removed") unless quiet or @playing_iter.nil?
|
@@ -158,8 +166,14 @@ module Ampv
|
|
158
166
|
i = 0
|
159
167
|
@model.each { |m, p, iter|
|
160
168
|
if iter[0] == @playing
|
169
|
+
# reset icon for previous playing entry
|
170
|
+
if @playing_iter
|
171
|
+
@playing_iter[2] = @current_is_watched ? WATCHED_PIXBUF : nil
|
172
|
+
end
|
161
173
|
@treeview.set_cursor(Gtk::TreePath.new(i), nil, false)
|
162
174
|
@playing_iter = iter
|
175
|
+
@current_is_watched = @playing_iter[2] == WATCHED_PIXBUF
|
176
|
+
@playing_iter[2] = PLAYING_PIXBUF
|
163
177
|
break
|
164
178
|
end
|
165
179
|
i += 1
|
data/lib/ampv/version.rb
CHANGED
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ampv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
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-02-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gtk2
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: json
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: ruby-fifo
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
description: A minimal GTK2 mpv frontend.
|
@@ -61,11 +61,11 @@ extra_rdoc_files: []
|
|
61
61
|
files:
|
62
62
|
- LICENSE
|
63
63
|
- input.conf
|
64
|
-
- lib/ampv/playlist.rb
|
65
|
-
- lib/ampv/version.rb
|
66
64
|
- lib/ampv/mpvwidget.rb
|
67
65
|
- lib/ampv/progressbarwidget.rb
|
68
66
|
- lib/ampv/config.rb
|
67
|
+
- lib/ampv/playlist.rb
|
68
|
+
- lib/ampv/version.rb
|
69
69
|
- lib/ampv.rb
|
70
70
|
- bin/ampv
|
71
71
|
homepage: https://github.com/ahodesuka/ampv
|
@@ -78,12 +78,12 @@ require_paths:
|
|
78
78
|
- lib
|
79
79
|
required_ruby_version: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- -
|
81
|
+
- - '>='
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: 1.9.3
|
84
84
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
|
-
- -
|
86
|
+
- - '>='
|
87
87
|
- !ruby/object:Gem::Version
|
88
88
|
version: '0'
|
89
89
|
requirements:
|