sensible-cinema 0.18.3 → 0.18.4

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog CHANGED
@@ -1,3 +1,7 @@
1
+ == 0.18.3 ==
2
+
3
+ Cleanup UI, make more user friendly in a few circumstances, for create, fix buttons.
4
+
1
5
  == 0.18.0 ==
2
6
 
3
7
  Add some home video EDL's, clarify the license(s), use a slightly better video codec, minor bug fixes/refactoring.
@@ -1,5 +1,6 @@
1
1
  All files (c) Roger Pack 2010
2
2
  All files are released under the GPLv3 license [1] unless otherwise specified. Ping me if you want/need this changed.
3
+ The edit lists are CC license, like wikipedia.
3
4
 
4
5
  May contain some 3rd party libraries/executables under their own (separate, open source) licenses.
5
6
 
data/README CHANGED
@@ -10,6 +10,9 @@ To use it, basically install then run it (see below).
10
10
  It will come up with some windows where you choose what you want to do
11
11
  (edit an edit list, use an edit decision list to edit a DVD, etc.)
12
12
 
13
+ If you try to make an edited copy of your DVD, note that it will take about one and a half times
14
+ as long as the playtime of the movie itself, so budget some time for it.
15
+
13
16
  Enjoy!
14
17
 
15
18
  [1] http://en.wikipedia.org/wiki/Linear_video_editing
@@ -24,19 +27,7 @@ then "click into it" and search for and run the file "run sensible cinema.bat"
24
27
 
25
28
  == Creating Your Own Edit Lists, or modifying previously existing ones ==
26
29
 
27
- You create an edit decision list for sensible cinema to use against whatever you want.
28
-
29
- An Edit Decision List looks something like this example:
30
-
31
- Here's one with more detail
32
-
33
- https://github.com/rdp/sensible-cinema/blob/master/zamples/edit_decision_lists/example_edit_decision_list.txt
34
-
35
- Basically your job is to create an appropriate file (like that one) somewhere,
36
- then start sensible-cinema and instruct it to use your new file.
37
-
38
- Once you're done then you can contribute your scene descriptions file if desired, back to the project itself (see the "feedback" section,
39
- below).
30
+ See the accompanied how_to_create.txt file.
40
31
 
41
32
  == FAQ ==
42
33
 
@@ -49,6 +40,10 @@ A. You could burn a new DVD with it. First create it on your hard drive. Then
49
40
  If you're interested in also being able to "beam" it from your computer to your game console (ex: PS3) ping me--I might have
50
41
  something in mind that could help, though hasn't been created yet.
51
42
 
43
+ Q. I want to give an edited DVD to a friend, how do I do that?
44
+ A. Probably give them the original DVD and a link to sensible-cinema :)
45
+ You may want to loan them a DVD burner if they don't have one.
46
+
52
47
  == Caveats ==
53
48
 
54
49
  NB that "someone" has to create a edit decision lists, per DVD.
data/TODO CHANGED
@@ -2,42 +2,44 @@
2
2
 
3
3
  == up next release ==
4
4
 
5
- simplify/de-bugify
6
-
7
- only pick a drive once per session
8
- only pick output filename once per session...
9
- does this allow me to kill that other button?
10
- if not: re-run latest preview -> auto play in smplayer
11
- kill mencoder instances.
12
-
13
- assert that at least one drive has a DVD in it...maybe loop refuse with message until this?
14
-
5
+ edit lists:
6
+ temple
7
+ cool runnings
8
+ cars
9
+
15
10
  == slightly lower than that, somewhat ordered ==
16
11
 
17
- disallow choosing empty drive? fail cleaner? (issue 11)
18
- make them acknowledge "just because it lacks profanity...does not immediately make it an inspiring experience."
12
+ research into edl dvdnav being flaky...
13
+ especially with arrows...
14
+ kill mencoder instances always, even if hard in jruby 1.5 :)
15
+ how can I get the return val tho? processbuilder gem?
16
+ all dogs edit list
19
17
  compare computer DVD timings with physical player...
20
-
21
18
  mpeg is lossy (at least my current one pass one is)
22
- could check if DVD Flick handles *oversize* files well, for information sake
23
- check it against cool runnings...
24
- on the big screen...does raw.mpg look normal there? fulli?
25
- if so, then program the "frame accurate" cutter
19
+ could check if DVD Flick handles *oversize* files well, for information sake
26
20
  partner for filters (Jon, Karlie if interested...give beta)
27
21
  lotsa filters somehow
28
22
  my dvd's (loose timestamps...)
29
23
  partners'...
30
24
  beta release/rinse and repeat with various ppl (once it's releasable...)
31
25
  a real'ish-er website
26
+ mailing list, link to it
32
27
  play a bigger noise when totally done...(dvd flick'ish...)
33
- note that this can corrupt your soul!
28
+ make them acknowledge "just because it lacks profanity...does not immediately make it an inspiring experience."
29
+ note that this can corrupt your soul!
34
30
  don't watch it if it's dark! come on!
35
31
  dove.org, your kids will find the originals!
36
- does ffdshow let WMP playback the audio on those files?
37
32
 
38
33
  == DVD backlog (unordered, some very low prio, basically never do) ==
39
34
 
40
- @mplayer you *die* with edl's on many DVD's...
35
+ disallow choosing empty drive? fail more gracefully? (issue 11)
36
+ some status bar that shows which DVD is in currently, how many match it, et al (pre button)
37
+ splitter abs. coords option
38
+ video on how to use imdb
39
+ alternate endings
40
+ @ffmpeg there's no audio when going mpg -> mpg with copy!
41
+ @mplayer you *die* with edl's on many DVD's... ex: on bunny one
42
+ vendor\cache\mencoder\mplayer dvdnav://2 -nocache -edl C:\Users\packrd\AppData\Local\Temp\mplayer.temp.edl -dvd-device f:\
41
43
  with "preview segment" can't you preview it once it has passed that segment?
42
44
  can pull from imdb at package time [?]
43
45
  delete fulli file
@@ -45,12 +47,11 @@
45
47
  bundle 7z [?]
46
48
  if license agreement allows
47
49
  thinking not though...
48
- bundle rubyzip
49
- create wiki ("next to" distributed EDL's?)
50
50
  mencoder harddup useful?
51
- .exe installer, just unzips, runs the .bat file for them [?] :)
52
- create a forum
53
- ask if you can somehow more grab to the *same* codec (ffmpeg, mencoder mailing lists)
51
+ .exe installer
52
+ just unzips, runs the .bat file for them [?] :)
53
+ full msi
54
+ ask if you can somehow more easily grab to "mostly the same" exact codec (ffmpeg, mencoder mailing lists)
54
55
  split EDL's somehow into their own project/LLC...
55
56
  add md5 "warning" when something (anything) had failed disc fails doesn't match because of read failure...
56
57
  not loop on preview view (smplayer)
@@ -96,9 +97,7 @@
96
97
  advertise urug, ruby flow :)
97
98
  "Re-run most recent" disabled when there isn't one [?]
98
99
  re-do DVD EDL's that need it :P
99
- all dogs go to heaven...finish EDL
100
100
  warn when labels exist and don't match...
101
- auto-download imagemagick, too
102
101
  check all the many options to see if there's a "cross platform way to split files accurately" besides my hacky kludge.
103
102
  can rip from a DVD-like local folder (would anybody ever need this?)
104
103
  ripping "redoes" a large last section, for combining. Can I avoid this?
@@ -115,7 +114,6 @@
115
114
  @VLC: hard crash when ripping that one DVD...long one, about the constitution...
116
115
  in general, fine tune burning with various things...
117
116
 
118
-
119
117
  @rspec: it appears to *undo* my stub's after the test, so background threads choke (take out after...)
120
118
 
121
119
  make sure can work with very large DVD's...
@@ -134,10 +132,9 @@ double buffering hard drive/incoming copying from DVD might speed things, if you
134
132
  might not work for all modes tho...
135
133
  make the progress bar map "better" to the actual time that each section should take...
136
134
 
137
- "show" what drive they have in there--like an auto-detect, and if it has EDL's available for it or not.
138
- Note to people: make several EDL's per movie.
139
135
  Note to people: clean your disks!
140
-
136
+ in an exception
137
+
141
138
  @mencoder: cannot rip from dvd with -ovc copy -oac copy (tearing)
142
139
 
143
140
  @ffmpeg: rip to fulli mpeg -> ffmpeg -ovc copy -oac copy out.mpg -> no audio!
@@ -151,7 +148,6 @@ burnable to DVD/CD/multi DVD automagically... (auto-burn insert your new disk!)
151
148
  transcode to condense..?
152
149
  split to allow?
153
150
  try to compile transcode in cygwin (yipes)
154
- legal shtuff (LICENSE)
155
151
 
156
152
  @smplayer: right click on DVD...
157
153
  the ac3 thing (I have to specify it...is this necessary? is it always ac3?)
@@ -344,6 +340,6 @@ create a "book edit list" (word x is at position y...)
344
340
  @smplayer: your CD config is awful.
345
341
  @mencoder: can't split
346
342
  something like you watch it *with* you friends and can all chat together...hmm...
347
- donate money to several projects I like :)
343
+ donate money to several projects I use/like :)
348
344
 
349
- @mencoder: ripping like this results in an (avidemux, VLC) fourcc of 'ugh': mencoder2 dvdnav://1 -oac copy -ovc copy -o D:\raw_rip_mpeg_example.avi -endpos 20 -dvd-device E:\
345
+ @mencoder: ripping like this results in an (avidemux, VLC) fourcc of 'ugh': mencoder2 dvdnav://1 -oac copy -ovc copy -o D:\raw_rip_mpeg_example.avi -endpos 20 -dvd-device E:\
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.18.3
1
+ 0.18.4
@@ -133,19 +133,10 @@ module SensibleSwing
133
133
  system_non_blocking("start http://smplayer.sourceforge.net/downloads.php")
134
134
  System.exit(1)
135
135
  else
136
- success_no_run, wrote_to_here_fulli = do_copy_dvd_to_hard_drive false, true # LODO pass in a block (currently @after_success_once is run from the other thread--even have a race condition in there!)
137
- on_success = proc {
138
- command = "smplayer #{wrote_to_here_fulli}"
139
- system_non_blocking command
140
- }
141
- if success_no_run
142
- on_success.call
143
- else
144
- Thread.new {
145
- sleep 5; on_success.call # start it anyway, a bit delayed to let it start spooling to disk...
146
- }
147
- #@after_success_once = on_success # shenanigans to be able to let that thread run...
148
- end
136
+ success_no_run, wrote_to_here_fulli = do_copy_dvd_to_hard_drive false, true
137
+ sleep 5 unless success_no_run
138
+ command = "smplayer #{wrote_to_here_fulli}"
139
+ system_non_blocking command
149
140
  end
150
141
  }
151
142
 
@@ -343,43 +334,57 @@ EOL
343
334
  end
344
335
 
345
336
  def choose_dvd_and_edl_for_it
346
- drive, dvd_volume_name, md5sum = choose_dvd_drive
347
- puts "#{drive}, #{dvd_volume_name}, #{md5sum}"
348
- edit_list_path = single_edit_list_matches_dvd(md5sum)
349
- if !edit_list_path
350
- fc = FileDialog.new(self)
351
- fc.set_title "Please pick a DVD Edit Decision List File"
352
- fc.set_directory EDL_DIR
353
- edit_list_path = fc.go
354
- end
355
- raise 'cancelled' unless edit_list_path
356
- descriptors = nil
357
- while(!descriptors)
358
- begin
359
- descriptors = parse_edl edit_list_path
360
- rescue SyntaxError => e
361
- puts e
362
- show_blocking_message_dialog("syntax error: " + edit_list_path + " " + e)
337
+ @_choose_dvd_and_edl_for_it ||=
338
+ begin
339
+ drive, dvd_volume_name, md5sum = choose_dvd_drive
340
+ puts "#{drive}, #{dvd_volume_name}, #{md5sum}"
341
+ edit_list_path = single_edit_list_matches_dvd(md5sum)
342
+ if !edit_list_path
343
+ fc = FileDialog.new(self)
344
+ fc.set_title "Please pick a DVD Edit Decision List File"
345
+ fc.set_directory EDL_DIR
346
+ edit_list_path = fc.go
363
347
  end
348
+ raise 'cancelled' unless edit_list_path
349
+ descriptors = nil
350
+ while(!descriptors)
351
+ begin
352
+ descriptors = parse_edl edit_list_path
353
+ rescue SyntaxError => e
354
+ puts e
355
+ show_blocking_message_dialog("syntax error: " + edit_list_path + " " + e)
356
+ end
357
+ end
358
+ [drive, dvd_volume_name, md5sum, edit_list_path, descriptors]
364
359
  end
365
- return drive, dvd_volume_name, md5sum, edit_list_path, descriptors
366
360
  end
367
361
 
368
362
  def get_title_track descriptors
369
363
  descriptors["dvd_title_track"] || "1"
370
364
  end
365
+
366
+ def get_save_to_filename dvd_title
367
+ @_get_save_to_filename ||=
368
+ begin
369
+ fc = new_filechooser
370
+ fc.set_title "Pick where to save #{dvd_title} edited to"
371
+ save_to_file_name = dvd_title + ' edited version'
372
+ save_to_file_name = save_to_file_name.gsub(' ', '_').gsub( /\W/, '') # no punctuation or spaces for now...
373
+ fc.set_file(get_drive_with_most_space_with_slash + save_to_file_name)
374
+ save_to = fc.go
375
+ a = File.open(File.dirname(save_to) + "/test_file_to_see_if_we_have_permission_to_write_to_this_folder", "w")
376
+ a.close
377
+ File.delete a.path
378
+ save_to
379
+ end
380
+ end
371
381
 
372
- def do_copy_dvd_to_hard_drive should_prompt_for_start_and_end_times, want_fulli_name = false
382
+ def do_copy_dvd_to_hard_drive should_prompt_for_start_and_end_times, exit_early_if_fulli_exists = false
373
383
  drive, dvd_volume_name, md5sum, edit_list_path, descriptors = choose_dvd_and_edl_for_it
374
-
375
- dvd_title = descriptors['name'] || dvd_volume_name
376
-
377
- fc = new_filechooser
378
-
379
384
  # LODO allow for spaces in the save_to filename
380
-
381
385
  if should_prompt_for_start_and_end_times
382
- show_blocking_message_dialog("Ok, let's preview just a portion of it. \nNote that you'll want to preview a section that wholly includes an edit decision in it\n For example, if it mutes from second 1 to second 10, you'll want to play from 00:00 to 00:12 or what not.\nAlso note that the first time you preview a section of a video, it will take like 20 minutes as it sets up the video for previewing.\nSubsequent previews will be faster, though, as long as you use the same filename.", "Preview")
386
+ # only show it once :)
387
+ @show_block ||= show_blocking_message_dialog("Ok, let's preview just a portion of it. \nNote that you'll want to preview a section that wholly includes an edit decision in it\n For example, if it mutes from second 1 to second 10, you'll want to play from 00:00 to 00:12 or what not.\nAlso note that the first time you preview a section of a video, it will take like 20 minutes as it sets up the video for previewing.\nSubsequent previews will be faster, though, as long as you use the same filename.", "Preview") || true
383
388
  start_time = get_user_input("At what point in the video would you like to start your preview? (like 01:00 for starting at 1 minute)", Storage['start_time'])
384
389
  end_time = get_user_input("At what point in the video would you like to finish your preview? (like 02:00 for ending at the 2 minute mark)", Storage['end_time'])
385
390
  unless start_time and end_time
@@ -389,21 +394,11 @@ EOL
389
394
  Storage['start_time'] = start_time
390
395
  Storage['end_time'] = end_time
391
396
  end
392
-
393
- fc.set_title "Pick where to save #{dvd_title} edited to"
394
-
395
- save_to_file_name = dvd_title + ' edited version'
396
- save_to_file_name = save_to_file_name.gsub(' ', '_').gsub( /\W/, '') # no punctuation for now...
397
- fc.set_file(get_drive_with_most_space_with_slash + save_to_file_name)
398
- save_to = fc.go
399
- a = File.open(File.dirname(save_to) + "/test_file_to_see_if_we_have_permission_to_write_to_this_folder", "w")
400
- a.close
401
- File.delete a.path
402
-
397
+ dvd_title = descriptors['name'] || dvd_volume_name
398
+ save_to = get_save_to_filename dvd_title
403
399
  fulli = MencoderWrapper.calculate_final_filename save_to
404
- if want_fulli_name
400
+ if exit_early_if_fulli_exists
405
401
  if File.exist? fulli + ".done"
406
- # just return the full path early...
407
402
  return [true, fulli]
408
403
  end
409
404
  # make it create a dummy response file for us :)
@@ -412,7 +407,8 @@ EOL
412
407
  end
413
408
 
414
409
  dvd_title_track = get_title_track(descriptors)
415
- generate_and_run_bat_file save_to, edit_list_path, descriptors, drive, dvd_title, start_time, end_time, dvd_title_track
410
+ run_mplayer = should_prompt_for_start_and_end_times || exit_early_if_fulli_exists
411
+ generate_and_run_bat_file save_to, edit_list_path, descriptors, drive, dvd_title, start_time, end_time, dvd_title_track, run_mplayer
416
412
  [false, fulli] # false means it's running in a background thread :P
417
413
  end
418
414
 
@@ -424,8 +420,8 @@ EOL
424
420
  MencoderWrapper.get_bat_commands descriptors, drive, save_to, start_time, end_time, dvd_title_track
425
421
  end
426
422
 
427
- def generate_and_run_bat_file save_to, edit_list_path, descriptors, drive, dvd_title, start_time, end_time, dvd_title_track
428
- Storage['last_params'] = [save_to, edit_list_path, descriptors, drive, dvd_title, start_time, end_time, dvd_title_track]
423
+ def generate_and_run_bat_file save_to, edit_list_path, descriptors, drive, dvd_title, start_time, end_time, dvd_title_track, run_mplayer
424
+ Storage['last_params'] = [save_to, edit_list_path, descriptors, drive, dvd_title, start_time, end_time, dvd_title_track, run_mplayer]
429
425
  commands = get_mencoder_commands descriptors, drive, save_to, start_time, end_time, dvd_title_track
430
426
  temp_dir = Dir.tmpdir
431
427
  temp_file = temp_dir + '/vlc.temp.bat'
@@ -439,7 +435,7 @@ EOL
439
435
 
440
436
  # allow our popups to still be serviced while it is running
441
437
  @background_thread = Thread.new {
442
- run_create_commands commands, save_to
438
+ run_create_commands commands, save_to, run_mplayer
443
439
  popup.dispose
444
440
  }
445
441
  # LODO warn if they will overwrite a file in the end...
@@ -447,7 +443,7 @@ EOL
447
443
 
448
444
  attr_accessor :background_thread, :after_success_once
449
445
 
450
- def run_create_commands batch_commands, save_to
446
+ def run_create_commands batch_commands, save_to, run_mplayer
451
447
  @buttons.each{|b| b.set_enabled false}
452
448
  success = true
453
449
  lines = batch_commands.lines.to_a
@@ -461,7 +457,7 @@ EOL
461
457
  if line =~ /@rem /
462
458
  success = true # these fail fof some reason?
463
459
  else
464
- p 'line failed: ' + line unless success
460
+ p 'line failed: ' + line + ' maybe time frame is past end of DVD, or Also note that if your DVD has scratches that cause it to skip, the time signatures will be off, so clean your discs!' unless success
465
461
  end
466
462
  end
467
463
  @progress_bar.set_value(10 + idx/total_size*90)
@@ -470,23 +466,22 @@ EOL
470
466
  @buttons.each{|b| b.set_enabled true}
471
467
  if success
472
468
  saved_to = save_to + '.avi'
473
- if @after_success_once
474
- @after_success_once.call saved_to
469
+ if run_mplayer
470
+ system_non_blocking "smplayer #{saved_to}"
475
471
  else
476
472
  NonBlockingDialog.new(" Done--you may now watch file #{saved_to} in SMPlayer or VLC player")
477
473
  show_file = "explorer /e,/select,\"#{File.expand_path(saved_to).to_filename}\""
478
474
  system_non_blocking show_file
479
- #self.close # ?
480
475
  end
481
476
  else
482
477
  show_blocking_message_dialog("Failed--please examine screen output and report back!\nAlso consult the troubleshooting section of the README file.", "Failed", JOptionPane::ERROR_MESSAGE)
483
478
  end
484
- @after_success_once = nil
485
479
  end
486
480
 
487
481
  # returns e:\, volume, md5sum
488
482
  def choose_dvd_drive
489
483
  opticals = DriveInfo.get_dvd_drives_as_win32ole
484
+ show_blocking_message_dialog 'insert dvd first' unless opticals.find{|d| d.VolumeName }
490
485
  names = opticals.map{|d| d.Name + "\\" + " (" + (d.VolumeName || 'Insert DVD and re-select') + ")"}
491
486
 
492
487
  if opticals.length != 1
@@ -1,6 +1,16 @@
1
- first play it in VLC, discover which title is the main title:
2
-
3
- now open Sensible cinema in create mode
1
+ You create an edit decision list for sensible cinema to use against whatever you want.
2
+
3
+ An Edit Decision List looks something like this:
4
+
5
+ https://github.com/rdp/sensible-cinema/blob/master/zamples/edit_decision_lists/example_edit_decision_list.txt
6
+
7
+ Basically your job is to create an appropriate file (like that one) somewhere,
8
+ then start sensible-cinema and instruct it to use your new file.
9
+
10
+ For a DVD, the steps might look like this:
11
+
12
+ open Sensible cinema in create mode
13
+ insert DVD, click "create new edit list" button
4
14
 
5
15
  click "open ripped version of DVD unedited", right click, create new file, name it something.txt, right click, "open", and then select it.
6
16
 
@@ -28,9 +38,12 @@ Also after you're done, you can delete any left over files that are still there.
28
38
  Also after you're done, you can submit it back to the project by emailing me with an attachment: rogerdpack@gmail.com
29
39
 
30
40
  Also if you want sensible-cinema to be able to auto-choose your EDL, then include its unique id (click the "Get a disk's unique id" button).
31
-
41
+
42
+ I typically like to make two edit lists per DVD. One that takes out swearing, sex, and gruesome violence, and another
43
+ "more paranoid" version that takes out basically anything that could be offensive to anybody :) ("dang", "fetch", "too tense" of scenes...)
44
+
32
45
  A few pointers:
33
46
  You can just watch the DVD (using any DVD player), and get timestamps that way, before starting this.
34
47
  A good one is "smplayer" (the [ and ] keys control playback speed)
35
48
  You can watch the DVD using VLC Player, which has a "fast forward" button, just recognize that VLC's timestamps are slightly off,
36
- so they'll only be approximate, but it might still help.
49
+ so they'll only be approximate, but it might still help.
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{sensible-cinema}
8
- s.version = "0.18.3"
8
+ s.version = "0.18.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Roger Pack"]
@@ -26,7 +26,6 @@ Gem::Specification.new do |s|
26
26
  "RUN SENSIBLE CINEMA CLICK HERE.bat",
27
27
  "Rakefile",
28
28
  "TODO",
29
- "USAGE_TERMS.TXT",
30
29
  "VERSION",
31
30
  "bin/sensible-cinema",
32
31
  "bin/sensible-cinema-cli",
@@ -34,7 +33,7 @@ Gem::Specification.new do |s|
34
33
  "experimental_readme.txt",
35
34
  "ext/mkrf_conf.rb",
36
35
  "gplv3.txt",
37
- "how_to_create",
36
+ "how_to_create.txt",
38
37
  "lib/add_any_bundled_gems_to_load_path.rb",
39
38
  "lib/blanker.rb",
40
39
  "lib/drive_info.rb",
@@ -103,6 +103,10 @@ module SensibleSwing
103
103
  @show_blocking_message_dialog_last_args = args
104
104
  }
105
105
  @subject.stub!(:get_user_input) {'01:00'}
106
+ @subject.stub!(:system_blocking) { |command|
107
+ @system_blocking_command = command
108
+ }
109
+
106
110
  @subject.stub!(:system_non_blocking) { |command|
107
111
  @command = command
108
112
  Thread.new {} # fake out the return...
@@ -160,7 +164,7 @@ module SensibleSwing
160
164
  @subject.background_thread.join
161
165
  @args[-1].should == 1
162
166
  @args[-2].should == "01:00"
163
- @command.should match /explorer/
167
+ @command.should match /smplayer/
164
168
  @command.should_not match /fulli/
165
169
  end
166
170
 
@@ -221,10 +225,36 @@ module SensibleSwing
221
225
  end
222
226
 
223
227
  it "should create an edl and pass it through to mplayer" do
224
- @subject.instance_variable_get(:@mplayer_edl).simulate_click
225
- @command.should match(/mplayer.*-edl/)
226
- @command.should match(/-dvd-device /)
228
+ @subject.instance_variable_get(:@mplayer_edl).simulate_click.join
229
+ @system_blocking_command.should match(/mplayer.*-edl/)
230
+ @system_blocking_command.should match(/-dvd-device /)
231
+ end
232
+
233
+ it "should only prompt for drive once" do
234
+ count = 0
235
+ @subject.stub!(:choose_dvd_drive) {
236
+ raise 'bad' if count == 1
237
+ count = 1
238
+ ['drive', 'volume', '19d121ae8dc40cdd70b57ab7e8c74f76']
239
+ }
240
+ @subject.choose_dvd_and_edl_for_it
241
+ @subject.choose_dvd_and_edl_for_it
242
+ count.should == 1
243
+ end
244
+
245
+ it "should only prompt for save to filename once" do
246
+ count = 0
247
+ @subject.stub!(:new_filechooser) {
248
+ count += 1
249
+ FakeFileChooser.new
250
+ }
251
+ @subject.get_save_to_filename 'yo'
252
+ @subject.get_save_to_filename 'yo'
253
+ count.should == 1
227
254
  end
228
255
 
229
256
  end
257
+
258
+ it "should prompt you if you need to enter a dvd"
259
+
230
260
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 18
8
- - 3
9
- version: 0.18.3
8
+ - 4
9
+ version: 0.18.4
10
10
  platform: ruby
11
11
  authors:
12
12
  - Roger Pack
@@ -164,7 +164,6 @@ files:
164
164
  - RUN SENSIBLE CINEMA CLICK HERE.bat
165
165
  - Rakefile
166
166
  - TODO
167
- - USAGE_TERMS.TXT
168
167
  - VERSION
169
168
  - bin/sensible-cinema
170
169
  - bin/sensible-cinema-cli
@@ -172,7 +171,7 @@ files:
172
171
  - experimental_readme.txt
173
172
  - ext/mkrf_conf.rb
174
173
  - gplv3.txt
175
- - how_to_create
174
+ - how_to_create.txt
176
175
  - lib/add_any_bundled_gems_to_load_path.rb
177
176
  - lib/blanker.rb
178
177
  - lib/drive_info.rb
@@ -1,15 +0,0 @@
1
- Copyright 2010 Roger Pack
2
-
3
- Sensible Cinema
4
-
5
-
6
- USING THIS FREEWARE MIGHT BE ILLEGAL IN SOME COUNTRIES
7
-
8
- Please check with your legal advisor, and if this is the case in your country, you are NOT licensed to use this freeware.
9
-
10
- LICENSE TERMS AND CONDITIONS
11
-
12
- YOU ACKNOWLEDGE THAT LICENSOR MAKES NO WARRANTIES TO YOU IN CONNECTION WITH THIS LICENSE,
13
- INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE,
14
- NON-INFRINGEMENT AND LEGALITY IN YOUR COUNTRY. YOU AGREE TO DEFEND, INDEMNIFY AND HOLD HARMLESS LICENSOR FROM
15
- ANY AND ALL CLAIMS OF INFRINGEMENT (INCLUDING THOSE MADE BY THIRD PARTIES) RESULTING IN WHOLE OR IN PART FROM YOUR USE OF THE FREEWARE.