about summary refs log tree commit diff stats
path: root/code/types.rb
blob: 96d67d06215372ecb68b09c1a09518e52ddc1507 (plain) (blame)
1
2
3
4
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
module Fm
	MIMETYPES = Marshal.load(File.read(
		File.join(FM_DIR, '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, hash, 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(hash, name, str, file)
			case hash.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(hash, name, str, file)
			"evince #{str}"
		end
		def mplayer(*args)
			hash = args[0] = args[0].dup
			str = args[2]

			if hash.detach
				flags = '-msglevel all=-1'
			else
				flags = ''
			end

			case hash.mode
			when nil
				if name =~ /720p/
					hash.mode = 1
				else
					hash.mode = 0
				end
				mplayer(*args)
			when 0
				return "mplayer #{flags} -fs -sid 0 #{str}"
			when 1
				return "mplayer #{flags} -vm sdl -sid 0 #{str}"
			end
		end
		def zsnes(hash, name, str, files)
			case hash.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 "/home/hut/bin/loadplaylist #{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