about summary refs log blame commit diff stats
path: root/data/apps.rb
blob: 089aba40f2f691fcb801629d5e3ba141d424f356 (plain) (tree)
1
2
3
4
5
6
7
8






                                            
                  





























                                                                 



                                                    


                   


                                
 


                                                     
                                                                                                                      
                                                         
                                                          
                                                   


                            

                                 

           







                                                      
                            

           



                                       


                            

                                      

           

                                                              

           



                                  


                            
                     

                                            
                            
                                   



                                                                     
                                         
           
 
                        
                                

           

                                                                            

           

                                  

           

                               





                                      
                       

                      



                                                     

   
## This file defines programs, and HOW those
## programs are run.
##
## Look at the definition of "totem" for a
## fully documented example.


module Application
	## def totem(files) starts the definition of totem
	def totem(files)
		## this is the `case' statement.
		## it looks up the mode and does different
		## things depending on the mode.
		case files.mode

		## if the mode is 0 (default)
		when 0
			## start totem in fullscreen
			"totem --fullscreen #{files}"

		## if the mode is 1
		when 1
			## start totem normally
			"totem #{files}"
		end

		## the mode is a number which you type in
		## between two r's. for example, press:
		## r1r
		## to run the file in mode 1.
		## there are shortcuts: the key l runs in mode 0,
		## and L in mode 1.

		## the variable `files' is of a type RunContext,
		## see ranger/code/runcontext.rb for details.
	end


	def aunpack(files)
		case files.mode
		when 0; "aunpack #{files}"
		when 1; "aunpack -l #{files} | less"
		end
	end

	def gedit(files)
		"gedit #{files}"
	end

	def mplayer(files)
		case files.mode
		when 0; "mplayer -fs -sid 0 #{files}"
		when 1; "mplayer -fs -sid 0 -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all:threads=8 #{files}"
		when 2; "mplayer -vm sdl -sid 0 #{files}"
		when 3; "mplayer -mixer software #{files}"
		when 4; "mplayer -vo caca #{files}"
		else nil end
	end

	def evince(files)
		"evince #{files}"
	end

	def feh(files)
		case files.mode
		when 0; "feh #{files}"
		when 1; "feh --bg-scale #{files.one}"
		when 2; "feh --bg-tile #{files.one}"
		when 3; "feh --bg-center #{files.one}"
		when 4; "gimp #{files}"
		when 5; "feh -F #{files}"
		else nil end
	end

	def interpreted_language(files)
		case files.mode
		when 1; run(files)
		when 0; vi(files)
		else nil end
	end

	def zsnes(files)
		"zsnes #{files.first}"
	end

	def run(files)
		files.first.executable? ? "#{files.one}" : nil
	end

	def vi_or_run(files)
		case files.mode
		when 1; run(files)
		when 0; vi(files)
		else nil end
	end

	def vi(files)
		files.dont_run_in_background

		commands = [
			'map h ZZ',
			'map q h',
			'map H :unmap h<CR>:unmap H<CR>:unmap q<CR>',
		].map {|x| "+'#{x}'"}.join(' ')

		"vi #{commands} #{files}"
	end

	def javac(files)
		"javac #{files}"
	end

	def java(files)
		"java #{files.files.map{|x| ~x.before_last('.')}.join(' ')}"
	end

	def firefox(files)
		"firefox #{files}"
	end

	def make(files)
		case files.mode
		when 0; "make"
		when 1; "make install"
		when 2; "make clear"
		else nil end
	end
	
	def rake(files)
		"rake"
	end

	## set the default editor for when pressing E
	alias editor vi

end