summary refs log tree commit diff stats
path: root/code/old_fm.rb
diff options
context:
space:
mode:
authorhut <hut@lavabit.com>2009-04-10 00:00:00 +0200
committerhut <hut@lavabit.com>2009-04-10 00:00:00 +0200
commit34bfb32ecf2cea5e5de95980beedb681139d9c01 (patch)
tree68acd3339f575782b5ebccbb70d8c1efd0dffc62 /code/old_fm.rb
parentadfea091f816cc2f4007e99b6b2be35a821857da (diff)
downloadranger-0.2.0.tar.gz
new minor version v0.2.0
Diffstat (limited to 'code/old_fm.rb')
-rw-r--r--code/old_fm.rb233
1 files changed, 0 insertions, 233 deletions
diff --git a/code/old_fm.rb b/code/old_fm.rb
deleted file mode 100644
index 6d868ebb..00000000
--- a/code/old_fm.rb
+++ /dev/null
@@ -1,233 +0,0 @@
-class Directory
-	def initialize(path)
-		@path = path
-		@pos = 0
-		refresh
-	end
-
-	attr_reader(:path, :files)
-	attr_accessor(:pos)
-
-	def refresh()
-		@files = Dir::glob(File::join(path, '*')).sort!
-	end
-	def self.current()
-		Fm.current_dir()
-	end
-end
-
-module Fm
-	def self.initialize
-		@key = ''
-		@dirs = {}
-		@current_dir = ''
-		enter_dir(Dir.getwd)
-	end
-
-	def self.current_path() self.current_dir.path end
-
-	attr_reader(:dirs, :current_dir)
-
-#	{
-#		"/" => [ 2,
-#					 ["usr", "home", "root", "etc"] ],
-#		 ...
-#	}
-	
-
-	def self.getfilehandler(file)
-		bn = File.basename(file)
-		case bn
-		when /\.(avi|mpg|flv)$/
-			"mplayer #{file} >> /dev/null"
-		when /\.(jpe?g|png)$/
-			"feh '#{file}'"
-		when /\.m3u$/
-			"cmus-remote -c && cmus-remote -P #{file} && cmus-remote -C 'set play_library=false' && sleep 0.3 && cmus-remote -n"
-		end
-	end
-
-	def self.enter_dir(dir)
-		dir = File.expand_path(dir)
-		olddirs = @dirs.dup
-		@dirs = {}
-
-		cur = 0
-		got = ""
-		ary = dir.split('/')
-		if ary == []; ary = [''] end
-		["", *ary].each do |folder|
-			got = File.join(got, folder)
-			cur = olddirs.has_key?(got) ? olddirs[got][0] : 0
-			@dirs[got] = [cur, Dir.glob(File.join(got, '*')).sort]
-		end
-
-		# quick fix, sets the cursor correctly when entering ".."
-		if @dirs.size < olddirs.size
-			@dirs[@currentdir] = olddirs[@currentdir] 
-			@dirs[got][0] = @dirs[got][1].index(@currentdir) || 0
-		end
-
-#		log @dirs
-
-		@currentdir = got
-#		@dirs[dir] = Dir[File.join(dir, '*')]
-		Dir.chdir(got)
-		
-#		log(@dirs)
-	end
-
-	def self.cursor() @dirs[@currentdir][0] end
-	def self.cursor=(x) @dirs[@currentdir][0] = x end
-
-	def self.currentdir() @dirs[@currentdir][1] end
-
-	def self.currentfile
-		@dirs[@currentdir][1][@dirs[@currentdir][0] || 0]
-	end
-
-	def self.get_offset(dir, max)
-		pos = dir[0]
-		len = dir[1].size
-		max -= 2
-		if len <= max or pos < max/2
-			return 0
-		elsif pos > (len - max/2)
-			return len - max
-		else
-			return pos - max/2
-		end
-	end
-
-	def self.put_directory(c, d)
-		l = 0
-		unless d == nil
-			offset = get_offset(d, lines)
-			(lines - 1).times do |l|
-				lpo = l + offset
-				break if (f = d[1][lpo]) == nil
-
-				if File.symlink?(f)
-					color(3)
-				elsif File.directory?(f)
-					color(4)
-				elsif File.executable?(f)
-					color(2)
-				else
-					color(7)
-				end
-				puti l+1, c*@wid, File.basename(f).ljust(@wid-1)[0, @wid]
-			end
-		end
-
-		column_clear(c, l)
-	end
-
-	def self.column_clear(n, from=0)
-		(from -1).upto(lines) do |l|
-			puti l+2, (n * @wid), ' ' * @wid
-		end
-	end
-
-	def self.column_put_file(n, file)
-		m = lines
-		i = 0
-		File.open(file, 'r') do |f|
-			f.lines.each do |l|
-				puti i+1, n * @wid, l.gsub("\t","   ")[0, @wid-1].ljust(@wid-1)
-				i += 1
-				break if i == m
-			end
-		end
-		column_clear(n, i)
-	end
-
-	def self.draw
-		color 7
-		puti 0, 3, "pwd: #{@current_path}".ljust(cols)
-
-		if @dirs.size == 1
-			@temp = [nil, @dirs["/"]]
-		else
-			left = @dirs[@currentdir[0, @currentdir.rindex('/')]]
-			left ||= @dirs['/']
-			@temp = [left, @dirs[@currentdir]]
-		end
-
-		@wid = cols / 3
-		f = currentfile
-		begin
-			if File.directory?(f)
-				put_directory(2, [0, Dir.glob(File.join(f, '*')).sort])
-			else
-				column_put_file(2, currentfile)
-			end
-		rescue
-			column_clear(2)
-		end
-
-		2.times do |c|
-			put_directory(c, @temp[c])
-		end
-
-	
-		movi(self.cursor + 1 - get_offset(@dirs[@currentdir], lines), @wid)
-	end
-
-	# ALL combinations of multiple keys have to be in the COMBS array.
-	COMBS = %w(
-		gg
-	)
-	def self.main_loop
-		while true
-			draw
-
-			case @key << geti
-			when 'j'
-				self.cursor += 1
-				self.cursor = currentdir.size - 1 if self.cursor >= currentdir.size
-
-			when 'gg'
-				self.cursor = 0
-
-			when 'gh'
-				enter_dir('~')
-
-			when 'G'
-				self.cursor = currentdir.size - 1
-
-			when 'k'
-				self.cursor -= 1
-				self.cursor = 0 if self.cursor < 0
-
-			when '<bs>', 'h'
-				enter_dir('..') unless @dirs.size == 1
-
-			when '<cr>', 'l'
-				if File.directory?(currentfile || '')
-					begin
-						olddir = @currentdir
-						enter_dir(currentfile)
-					rescue Exception
-						enter_dir olddir
-					end
-				else
-					h = getfilehandler(currentfile)
-					h and system(h)
-				end
-
-			when 'q'
-				break
-			end
-
-			unless @key == '' or COMBS.select{ |x|
-				x.size != @key.size and x.size > @key.size
-			}.map{ |x|
-				x[0, @key.size]
-			}.include? @key
-				@key = ''
-			end
-		end
-	end
-end
-