Method: Sh::Browse#initialize
- Defined in:
- lib/sh_browse.rb
#initialize(view) ⇒ Browse
Returns a new instance of Browse.
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 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 127 128 129 |
# File 'lib/sh_browse.rb', line 5 def initialize view Sh::Log.warning 'Instance of Browse already created!' if @@instance @@instance = self @tree = TreeView.new @tree.selection.mode = Gtk::SELECTION_MULTIPLE ren_artist = CellRendererText.new col_artist = TreeViewColumn.new('Songs', ren_artist) col_artist.set_cell_data_func(ren_artist) do |tvc, cell, model, iter| cell.text = '' data = iter[0] if data.is_a? Sh::Song if data.title cell.text = "%.2d\t%s" % [data.track_num, data.title] else cell.text = File.basename(data.path) end else cell.text = data.to_s end end @tree.append_column col_artist @model = TreeStore.new(Object, Array) @model.set_default_sort_func do |a, b| oa, ob = a[0], b[0] oa.to_s <=> ob.to_s end @model.set_sort_column_id(TreeSortable::DEFAULT_SORT_COLUMN_ID, Gtk::SORT_ASCENDING) @tree.model = @model GLib::Timeout.add(1000) do fill_model false end @tree.signal_connect('button-press-event') do |, event| # Right-click if event. == 3 path = @tree.get_path_at_pos(event.x, event.y).first data = @model.get_iter(path)[0] selection = @tree.selection selected_rows = selection.selected_rows clicked_in_selection = false selected_rows.each do |sel| clicked_in_selection = sel.indices == path.indices break if clicked_in_selection end unless clicked_in_selection # Change the selection selection.unselect_all selection.select_path(path) selected_rows = selection.selected_rows end #puts selected_rows if data.is_a? Sh::Song song = data = Menu.new Actions.get(:song).each do |action| pbtn = nil if action[:stock_image] pbtn = ImageMenuItem.new(action.name) pbtn.image = Image.new(action[:stock_image], IconSize::MENU) else pbtn = MenuItem.new(action.name) end .append pbtn if action..include? :playlist pmnu = Gtk::Menu.new Sh::Playlists.load_playlists.each do |playlist| pbtn_playlist = Gtk::MenuItem.new playlist.name pbtn_playlist.signal_connect('activate') do || action.execute song, playlist end pmnu.append pbtn_playlist end pbtn. = pmnu else pbtn.signal_connect('activate') do || action.execute song end end end .show_all .popup(nil, nil, event., event.time) end end end @tree.signal_connect('row_activated') do |, path, col| iter = @tree.model.get_iter(path) parent = iter.parent if iter[0].is_a? Song view.stop queue = [] while iter.parent == parent queue << iter[0] iter.next! end prev = [] iter = parent.first_child until iter.path.indices == path.indices prev << iter[0] iter.next! end queue.insert 0, *prev view.queue = queue view.queue_pos = prev.size view.play elsif not iter[1].empty? view.stop view.queue = iter[1].dup view.play end end @scroll = ScrolledWindow.new(nil, nil) @scroll.set_policy(POLICY_AUTOMATIC, POLICY_AUTOMATIC) @scroll.add @tree end |