about summary refs log blame commit diff stats
path: root/code/types.rb
blob: 6d3999c7ef87970d6d9ab8372a6900ac01962fa3 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
         
                                           
                                                      











                                                   
                                

                                     
                                                                         



















                                               

                                                







                                                        
                                                 

                                       

                                                   
 
                                 

                                                 
                                                         
                                    
                                                         
                                   
                              
                                                                  
                              
                                                                      

                           

                                                 














                                                                   







                                                                                            





                                                                     














                                                               
                                          
                                                      
 
                                      


                                                   
                                                  

                              
                                           
 

                                                    
 
                              

                                                                                     
                                                                                                                                                          







                                                             

                   
                                   






                                                 
module Fm
	MIMETYPES = Marshal.load(File.read(
		File.join(MYDIR, 'data', 'mime.dat')))

	def self.get_default_flags(file)
		case file.mimetype
		when /^(?:image|video)\//; 'd'
		when 'application/pdf'; 'd'
		else '' end
	end

	def self.filehandler(files, hash)
		str = files.map{|x| x.sh}.join(' ')
		type = files.first.mimetype
		name = files.first.basename
		mode = hash.mode

		use = lambda do |sym|
			hash.exec = App.send(sym, mode, name, str, files)
		end

		case type
		when /^(video|audio)\//
			use.call :mplayer
		when "application/pdf"
			use.call :evince
		when /^(image)\//
			use.call :image
		else
			case name
			when /\.(swc|smc)/
				use.call :zsnes
			end
		end

		return hash
	end

	module App
		def image(mode, name, str, file)
			case mode
			when 4; "feh --bg-scale #{str}"
			when 5; "feh --bg-tile #{str}"
			when 6; "feh --bg-center #{str}"
			when 2; "gimp #{str}"
			when 1; "feh -F #{str}"
			else "feh #{str}"
			end
		end
		def evince(mode, name, str, file)
			"evince #{str}"
		end
		def mplayer(mode, name, str, files)
			rest = name, str, files

			case mode
			when nil
				if name =~ /720p/
					mplayer(1, *rest)
				else
					mplayer(0, *rest)
				end
			when 0
				return "mplayer -fs -sid 0 #{str}"
			when 1
				return "mplayer -vm sdl -sid 0 #{str}"
			end
		end
		def zsnes(mode, name, str, files)
			case mode
			when 1
				return "zsnes -ad sdl -o #{str}"
			else
				return "zsnes -ad sdl -u -o #{str}"
			end
		end

		module_function *%w*
			mplayer zsnes evince image
		*
	end

	def self.getfilehandler_frompath(*files)
		file = files.first
		n = files.size
		case file
		when /\.(part|avi|mpe?[g\d]|flv|fid|mkv|mov|wm[av]|vob|php|divx?|og[gmv])$/i
			if file =~ /720p/
				return "mplayer -vm sdl #{file.sh}", false
			else
				return "mplayer -fs #{file.sh}", false
			end

		when /\.java$/
			return "javac #{file.sh}", true

		when /\.class$/
			return log "java #{file.sh.before_last('.')}"

		when /\.part$/
			test = getfilehandler_frompath($`)
			if test
				return test
			end

		when /\.(swc|smc)$/i
			return "zsnes -ad sdl -u -o #{file.sh}"

		when /\.(zip|rar|tar|gz|7z|jar|bz2)$/i
			return "aunpack #{file.sh}", false

		when "Makefile"
			return "make"

		when /\.(jpe?g|png|gif)$/i
			return "feh #{file.sh}", false

		when /\.(html?|swf)$/i
			return "firefox #{file.sh}"

		when /\.pdf$/i
			return "evince #{file.sh}"

		when /\.txt$/i
			return VI % file.sh

		when /\.wav$/i
			return "aplay -q #{file.sh}"

		when /\.m3u$/i
#			return "mpc play #{File.expand_path(file)[13..-1].sh}", false
			return "/home/hut/bin/loadplaylist.rb #{file.sh}"
#			return "cmus-remote -c && cmus-remote -P #{file} && cmus-remote -C 'set play_library=false' && sleep 0.3 && cmus-remote -n", false

		end

	end
	def self.getfilehandler(file)
		test = getfilehandler_frompath(file.basename)
		if test
			return test
		end

		if file.executable?
			return "#{file.sh}", true
		end

		return VI % file.sh
	end
end