gnome-wallpaper-slideshow 0.3 → 0.4
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.
- data/Rakefile +3 -1
- data/bin/create-slideshow +62 -9
- data/lib/gnome-wallpaper-slideshow/wallpaper.rb +4 -0
- data/test/test-gnome-wallpaper-slideshow.rb +123 -35
- metadata +2 -2
data/Rakefile
CHANGED
data/bin/create-slideshow
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
|
4
4
|
require 'gnome-wallpaper-slideshow'
|
5
5
|
require 'gnome-wallpaper-slideshow/wallpaper'
|
6
|
+
require 'optparse'
|
6
7
|
|
7
8
|
DEFAULT_EXTENSIONS = "jpg,png,jpeg"
|
8
9
|
|
@@ -13,23 +14,75 @@ def get_absolute_path(file)
|
|
13
14
|
File.expand_path file
|
14
15
|
end
|
15
16
|
|
17
|
+
# Parse command-line options
|
18
|
+
options = {}
|
16
19
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
20
|
+
optparse = OptionParser.new do |opts|
|
21
|
+
opts.on('-d', '--dir DIRECTORY', 'directory containing image files') do |sender|
|
22
|
+
options[:dir] = sender
|
23
|
+
end
|
24
|
+
|
25
|
+
opts.on('-t', '--time DURATION', 'amount of time to display each wallpaper in seconds') do |sender|
|
26
|
+
options[:duration] = sender
|
27
|
+
end
|
28
|
+
|
29
|
+
opts.on('-r', '--transition DURATION', 'transition time between wallpapers in seconds') do |sender|
|
30
|
+
options[:transition] = sender
|
31
|
+
end
|
32
|
+
|
33
|
+
opts.on('-f', '--filename FILENAME', 'output filename') do |sender|
|
34
|
+
options[:file] = sender
|
35
|
+
end
|
36
|
+
|
37
|
+
opts.on('-e', '--extensions EXTENSIONS', "comma-separated list of file extensions, defaults to #{DEFAULT_EXTENSIONS}") do |sender|
|
38
|
+
options[:ext] = sender
|
39
|
+
end
|
40
|
+
|
41
|
+
opts.on('-s', '--shuffle', 'Randomly shuffle the order of the wallpapers') do |sender|
|
42
|
+
options[:shuffle] = sender
|
43
|
+
end
|
44
|
+
|
45
|
+
opts.on_tail('-h', '--help', 'Show this message') do
|
46
|
+
puts opts
|
47
|
+
exit
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# Ensure mandatory arguments are present
|
52
|
+
begin
|
53
|
+
optparse.parse!
|
54
|
+
mandatory = [:dir, :duration, :transition, :file]
|
55
|
+
|
56
|
+
missing = mandatory.select do |param|
|
57
|
+
options[param].nil?
|
58
|
+
end
|
59
|
+
|
60
|
+
if not missing.empty?
|
61
|
+
puts "Missing options: #{missing.join(', ')}"
|
62
|
+
puts optparse
|
63
|
+
exit
|
64
|
+
end
|
65
|
+
rescue OptionParser::InvalidOption, OptionParser::MissingArgument
|
66
|
+
puts $!.to_s
|
67
|
+
puts optparse
|
68
|
+
exit
|
21
69
|
end
|
22
70
|
|
23
|
-
image_directory =
|
24
|
-
time =
|
25
|
-
transition_time =
|
26
|
-
output_filename =
|
27
|
-
extensions =
|
71
|
+
image_directory = options[:dir]
|
72
|
+
time = options[:duration]
|
73
|
+
transition_time = options[:transition]
|
74
|
+
output_filename = options[:file]
|
75
|
+
extensions = options[:ext] || DEFAULT_EXTENSIONS
|
28
76
|
|
29
77
|
wallpapers = Dir.glob("#{image_directory}/*.{#{extensions}}").map do |file|
|
30
78
|
GnomeWallpaperSlideshow::Wallpaper.new get_absolute_path(file), time, transition_time
|
31
79
|
end
|
32
80
|
|
81
|
+
# Randomly shuffle the wallpapers if requested
|
82
|
+
if options[:shuffle]
|
83
|
+
wallpapers.shuffle!
|
84
|
+
end
|
85
|
+
|
33
86
|
slideshow = GnomeWallpaperSlideshow.new do
|
34
87
|
create_new_slideshow output_filename
|
35
88
|
start_time Time.now
|
@@ -12,4 +12,8 @@ class GnomeWallpaperSlideshow::Wallpaper
|
|
12
12
|
@duration = duration
|
13
13
|
@transition_time = transition_time
|
14
14
|
end
|
15
|
+
|
16
|
+
def ==(other)
|
17
|
+
(self.filename == other.filename) && (self.duration == other.duration) && (self.transition_time == other.transition_time)
|
18
|
+
end
|
15
19
|
end
|
@@ -1,58 +1,146 @@
|
|
1
|
-
require '
|
1
|
+
require 'minitest/spec'
|
2
|
+
require 'minitest/autorun'
|
2
3
|
require 'gnome-wallpaper-slideshow'
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
|
5
|
+
describe GnomeWallpaperSlideshow do
|
6
|
+
before do
|
7
|
+
@slideshow_default = GnomeWallpaperSlideshow.new do
|
8
|
+
create_new_slideshow
|
9
|
+
end
|
10
|
+
|
11
|
+
@slideshow = GnomeWallpaperSlideshow.new do
|
7
12
|
create_new_slideshow "xml_slideshow.xml"
|
13
|
+
start_time Time.local 2009,8,4,0,0,0
|
14
|
+
add_wallpaper (GnomeWallpaperSlideshow::Wallpaper.new "test.jpg", 100, 5)
|
15
|
+
add_wallpaper (GnomeWallpaperSlideshow::Wallpaper.new "other.jpg", 500, 3)
|
8
16
|
end
|
9
17
|
|
10
|
-
|
11
|
-
assert_equal path, slideshow.path
|
12
|
-
end
|
18
|
+
@slideshow_existing = GnomeWallpaperSlideshow.new
|
13
19
|
|
14
|
-
|
15
|
-
slideshow
|
16
|
-
|
20
|
+
# Mock out some methods to avoid reading/writing to disk
|
21
|
+
def @slideshow.write_xml(xml_string)
|
22
|
+
xml_string
|
23
|
+
end
|
24
|
+
|
25
|
+
def @slideshow_existing.load_slideshow_xml
|
26
|
+
@xml_doc = Nokogiri::XML("<?xml version=\"1.0\"?>
|
27
|
+
<background>
|
28
|
+
<starttime>
|
29
|
+
<year>2013</year>
|
30
|
+
<month>1</month>
|
31
|
+
<day>1</day>
|
32
|
+
<hour>00</hour>
|
33
|
+
<minute>00</minute>
|
34
|
+
<second>00</second>
|
35
|
+
</starttime>
|
36
|
+
<static>
|
37
|
+
<duration>100</duration>
|
38
|
+
<file>test.jpg</file>
|
39
|
+
</static>
|
40
|
+
<transition>
|
41
|
+
<duration>5</duration>
|
42
|
+
<from>test.jpg</from>
|
43
|
+
<to>other.jpg</to>
|
44
|
+
</transition>
|
45
|
+
<static>
|
46
|
+
<duration>500</duration>
|
47
|
+
<file>other.jpg</file>
|
48
|
+
</static>
|
49
|
+
<transition>
|
50
|
+
<duration>3</duration>
|
51
|
+
<from>other.jpg</from>
|
52
|
+
<to>test.jpg</to>
|
53
|
+
</transition>
|
54
|
+
</background>
|
55
|
+
") do |config|
|
56
|
+
config.strict
|
57
|
+
end
|
17
58
|
end
|
18
59
|
|
19
|
-
|
20
|
-
assert_equal path, slideshow.path
|
60
|
+
@slideshow_existing.load_slideshow "real_slideshow.xml"
|
21
61
|
end
|
62
|
+
|
22
63
|
|
23
|
-
|
24
|
-
|
64
|
+
it "can be created with the default output file" do
|
65
|
+
@slideshow_default.path.must_equal (Pathname.new "slideshow.xml")
|
66
|
+
end
|
25
67
|
|
26
|
-
|
27
|
-
|
28
|
-
assert_equal time, slideshow.start_time(time) # Test setting the time
|
29
|
-
assert_equal time, slideshow.start_time # Test getting the time
|
68
|
+
it "can be created with a specific output file" do
|
69
|
+
@slideshow.path.must_equal (Pathname.new "xml_slideshow.xml")
|
30
70
|
end
|
31
71
|
|
32
|
-
|
33
|
-
|
72
|
+
it "can have its output path set" do
|
73
|
+
path = Pathname.new "new_slideshow.xml"
|
74
|
+
@slideshow_default.path path
|
75
|
+
@slideshow_default.path.must_equal path
|
76
|
+
end
|
34
77
|
|
35
|
-
|
36
|
-
|
37
|
-
|
78
|
+
it "can have its start time set" do
|
79
|
+
time = Time.local 2007,5,3,1,0,0
|
80
|
+
@slideshow_default.start_time time
|
81
|
+
@slideshow_default.start_time.must_equal time
|
82
|
+
end
|
83
|
+
|
84
|
+
it "can be created with a start time" do
|
85
|
+
@slideshow.start_time.must_equal (Time.local 2009,8,4,0,0,0)
|
38
86
|
end
|
39
87
|
|
40
|
-
|
41
|
-
slideshow
|
42
|
-
|
43
|
-
|
88
|
+
it "can be created with wallpapers" do
|
89
|
+
@slideshow.wallpapers.size.must_equal 2
|
90
|
+
@slideshow.wallpapers.must_equal [(GnomeWallpaperSlideshow::Wallpaper.new "test.jpg", 100, 5), (GnomeWallpaperSlideshow::Wallpaper.new "other.jpg", 500, 3)]
|
91
|
+
end
|
44
92
|
|
45
|
-
|
93
|
+
it "can be created without wallpapers" do
|
94
|
+
@slideshow_default.wallpapers.must_be_empty
|
95
|
+
end
|
46
96
|
|
47
|
-
|
48
|
-
|
49
|
-
|
97
|
+
it "can have wallpapers added" do
|
98
|
+
wallpaper = GnomeWallpaperSlideshow::Wallpaper.new "test.jpg", 100, 5
|
99
|
+
@slideshow_default.add_wallpaper wallpaper
|
100
|
+
@slideshow_default.wallpapers.must_equal [(GnomeWallpaperSlideshow::Wallpaper.new "test.jpg", 100, 5)]
|
101
|
+
end
|
50
102
|
|
51
|
-
|
103
|
+
it "can have wallpapers removed" do
|
104
|
+
@slideshow.remove_wallpaper "test.jpg"
|
105
|
+
@slideshow.wallpapers.must_equal [(GnomeWallpaperSlideshow::Wallpaper.new "other.jpg", 500, 3)]
|
106
|
+
end
|
52
107
|
|
53
|
-
|
54
|
-
|
108
|
+
it "can load an existing slideshow file" do
|
109
|
+
@slideshow_existing.path.must_equal (Pathname.new "real_slideshow.xml")
|
110
|
+
@slideshow_existing.start_time.must_equal (Time.local 2013,1,1,0,0,0)
|
111
|
+
@slideshow_existing.wallpapers.must_equal [(GnomeWallpaperSlideshow::Wallpaper.new "test.jpg", "100", "5"), (GnomeWallpaperSlideshow::Wallpaper.new "other.jpg", "500", "3")]
|
112
|
+
end
|
55
113
|
|
56
|
-
|
114
|
+
it "can write out an xml file" do
|
115
|
+
@slideshow.save_xml.must_equal "<?xml version=\"1.0\"?>
|
116
|
+
<background>
|
117
|
+
<starttime>
|
118
|
+
<year>2009</year>
|
119
|
+
<month>8</month>
|
120
|
+
<day>4</day>
|
121
|
+
<hour>0</hour>
|
122
|
+
<minute>0</minute>
|
123
|
+
<second>0</second>
|
124
|
+
</starttime>
|
125
|
+
<static>
|
126
|
+
<duration>100</duration>
|
127
|
+
<file>test.jpg</file>
|
128
|
+
</static>
|
129
|
+
<transition>
|
130
|
+
<duration>5</duration>
|
131
|
+
<from>test.jpg</from>
|
132
|
+
<to>other.jpg</to>
|
133
|
+
</transition>
|
134
|
+
<static>
|
135
|
+
<duration>500</duration>
|
136
|
+
<file>other.jpg</file>
|
137
|
+
</static>
|
138
|
+
<transition>
|
139
|
+
<duration>3</duration>
|
140
|
+
<from>other.jpg</from>
|
141
|
+
<to>test.jpg</to>
|
142
|
+
</transition>
|
143
|
+
</background>
|
144
|
+
"
|
57
145
|
end
|
58
146
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gnome-wallpaper-slideshow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.4'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-01-
|
12
|
+
date: 2012-01-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|