Class: Ampv::MainWindow
- Inherits:
-
Gtk::Window
- Object
- Gtk::Window
- Ampv::MainWindow
- Defined in:
- lib/ampv.rb
Constant Summary collapse
- INPUT_CONF =
"#{ENV["HOME"]}/.mpv/input.conf"
- VIDEO_EXTS =
[ ".avi", ".mkv", ".mp4", ".mpeg", ".mpg", ".ogm", ".ogv", ".rm", ".ts", ".wmv" ]
- WHEEL_BUTTONS =
{ Gdk::EventScroll::UP => 4, Gdk::EventScroll::DOWN => 5, Gdk::EventScroll::LEFT => 6, Gdk::EventScroll::RIGHT => 7 }
Instance Method Summary collapse
-
#initialize ⇒ MainWindow
constructor
A new instance of MainWindow.
Constructor Details
#initialize ⇒ MainWindow
Returns a new instance of MainWindow.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/ampv.rb', line 22 def initialize unless defined?(MpvWidget::PATH) dlg = Gtk::MessageDialog.new(nil, Gtk::Dialog::DESTROY_WITH_PARENT, Gtk::MessageDialog::ERROR, Gtk::MessageDialog::BUTTONS_CLOSE, "Unable to find mpv executable") dlg.set_secondary_text("Please ensure you have mpv installed in your PATH.") dlg.run dlg.destroy exit end args = ARGV.reject { |x| x[0] != "-" } files = ARGV - args print_version if args.include?("--version") Config.load super set_title(PACKAGE) set_default_size(Config["width"], Config["height"]) set_window_position(Gtk::Window::POS_CENTER) move(Config["x"], Config["y"]) unless Config["x"] == -1 and Config["y"] == -1 add_events(Gdk::Event::POINTER_MOTION_MASK) Gtk::Drag.dest_set(self, Gtk::Drag::DEST_DEFAULT_ALL, [ [ "text/uri-list", 0, 0 ] ], Gdk::DragContext::ACTION_COPY) signal_connect("delete_event") { quit } signal_connect("scroll_event") { |w, e| handle_mouse_event(e) } signal_connect("button_press_event") { |w, e| handle_mouse_event(e) } signal_connect("key_press_event") { |w, e| handle_keyboard_event(e) } signal_connect("drag_data_received") { |w, dc, x, y, sd, type, time| files = sd.uris.map { |f| URI.decode(f).sub(/^file:\/\/[^\/]*/, "") } @playlist.clear(true) unless @playlist.get_files & files == files load_files(files) present Gtk::Drag.finish(dc, true, false, time) } signal_connect("motion_notify_event") { mouse_cursor_timeout } vbox = Gtk::VBox.new @mpv = MpvWidget.new(args) @progress_bar = ProgressBarWidget.new @playlist = Playlist.new @mpv.signal_connect("file_changed") { |w, file| @playing = URI.decode(file).sub(/^file:\/\/[^\/]*/, "") @mpv.send("show_text ${media-title} 1500") if window.state.fullscreen? @playlist.set_selected(@playing) set_title(File.basename(@playing)) } @mpv.signal_connect("playing_watched") { @playlist. } @mpv.signal_connect("length_changed") { |w, len| @playlist.update_length(@length = len) } @mpv.signal_connect("time_pos_changed") { |w, pos| @progress_bar.value = pos / @length.to_f } @mpv.signal_connect("stopped") { @progress_bar.value = 0 set_title(PACKAGE) next_file = @playlist.get_next @really_stop ||= next_file.nil? if !@really_stop @mpv.load_file(next_file) else @playlist. toggle_fullscreen if window.state.fullscreen? end @really_stop = false } @playlist.signal_connect("open_file_chooser") { open_file_chooser } @playlist.signal_connect("drag_data_received") { |w, dc, x, y, sd, type, time| sd.uris.each { |f| @playlist.add_file(URI.decode(f).sub(/^file:\/\/[^\/]*/, "")) } present Gtk::Drag.finish(dc, true, false, time) } @playlist.signal_connect("play_entry") { |w, file| @mpv.load_file(file, true) } @playlist.signal_connect("playing_removed") { @mpv.stop; @really_stop = true } Gtk::Drag.dest_set(@playlist, Gtk::Drag::DEST_DEFAULT_ALL, [ [ "text/uri-list", 0, 0 ] ], Gdk::DragContext::ACTION_COPY) @progress_bar.add_events(Gdk::Event::BUTTON_PRESS_MASK) @progress_bar.signal_connect("button_press_event") { |w, e| handle_seek_event(e) } vbox.pack_start(@mpv) vbox.pack_start(@progress_bar, false) add(vbox) show_all if !files.empty? load_files(files) elsif Config["playlist"].length > 0 Config["playlist"].each { |x| @playlist.add_file(x["file"], x["length"], x["watched"]) } if Config["resume_playback"] @mpv.load_file(Config["playlist_selected"]) else @playlist.set_selected(Config["playlist_selected"]) end end Gtk.main end |