summary refs log tree commit diff stats
path: root/interface/ncurses.rb
diff options
context:
space:
mode:
Diffstat (limited to 'interface/ncurses.rb')
-rw-r--r--interface/ncurses.rb68
1 files changed, 55 insertions, 13 deletions
diff --git a/interface/ncurses.rb b/interface/ncurses.rb
index 0d2659e4..a383a570 100644
--- a/interface/ncurses.rb
+++ b/interface/ncurses.rb
@@ -9,8 +9,18 @@ module Interface
 			'<cr>'
 		when ?\b, Ncurses::KEY_BACKSPACE
 			'<bs>'
+		when Ncurses::KEY_RIGHT
+			'<right>'
+		when Ncurses::KEY_LEFT
+			'<left>'
+		when Ncurses::KEY_UP
+			'<up>'
+		when Ncurses::KEY_DOWN
+			'<down>'
 		when ?\e
 			'<esc>'
+#		when ?\s
+#			'<space>'
 		when ?\t
 			'<tab>'
 		when 32
@@ -18,6 +28,7 @@ module Interface
 		when 0..127
 			key.chr
 		else
+			log(key)
 			''
 		end
 	end
@@ -83,10 +94,9 @@ module Interface
 		Ncurses.start_color
 		Ncurses.use_default_colors
 
-#		Ncurses.cbreak
 		Ncurses.noecho
 		Ncurses.curs_set 0
-		Ncurses.halfdelay(1000)
+		Ncurses.halfdelay(10000)
 		@@colortable = []
 	end
 
@@ -97,15 +107,16 @@ module Interface
 		Ncurses.endwin
 	end
 
+	def cleari
+		Ncurses.mvaddstr(0, 0, ' ' * (lines * cols))
+	end
+
 	def geti
 		Interface::keytable(Ncurses.getch)
 	end
 
 	def set_title(x)
-#		closei
-		print "\e]2;#{x}\007"
-#		system('echo', '-n', '-e', '"\e2;' + x + '\007"')
-#		starti
+		print "\e]2;#{x}\b"
 	end
 
 	def lines
@@ -135,22 +146,53 @@ module Interface
 	end
 
 	def color(fg = -1, bg = -1)
-		Ncurses.color_set(get_color(fg,bg), nil)
+		if OPTIONS['color']
+			Ncurses.color_set(get_color(fg,bg), nil)
+		end
 	end
 
 	def color_at y, x=0, len=-1, fg=-1, bg=-1
-		if y < 0 then y += Ncurses.LINES end
-		Ncurses.mvchgat(y, x, len, 0, get_color(fg, bg), nil)
+		if OPTIONS['color']
+			if y < 0 then y += Ncurses.LINES end
+			Ncurses.mvchgat(y, x, len, 0, get_color(fg, bg), nil)
+		end
 	end
 
 	def color_bold_at y, x=0, len=-1, fg=-1, bg=-1
-		if y < 0 then y += Ncurses.LINES end
-		Ncurses.mvchgat(y, x, len, Ncurses::A_BOLD, get_color(fg, bg), nil)
+		if OPTIONS['color']
+			if y < 0 then y += Ncurses.LINES end
+			Ncurses.mvchgat(y, x, len, Ncurses::A_BOLD, get_color(fg, bg), nil)
+		end
 	end
 
 	def color_reverse_at y, x=0, len=-1, fg=-1, bg=-1
-		if y < 0 then y += Ncurses.LINES end
-		Ncurses.mvchgat(y, x, len, Ncurses::A_REVERSE, get_color(fg, bg), nil)
+		if OPTIONS['color']
+			if y < 0 then y += Ncurses.LINES end
+			Ncurses.mvchgat(y, x, len, Ncurses::A_REVERSE, get_color(fg, bg), nil)
+		else
+			Ncurses.mvchgat(y, x, len, Ncurses::A_REVERSE, 0, nil)
+		end
+	end
+
+#	runi(:command => String/Array, :wait=>false)
+#	runi('ä́', 'b', 'c')
+	def runi(hash, *args)
+		wait = false
+		if Array === hash
+			command = hash
+		elsif String === hash
+			command = [hash, *args]
+		else
+			command = hash[:command] or return false
+			wait = hash[:wait] if hash.has_key? :wait
+		end
+
+		closei
+
+		system(*command)
+		gets if wait
+
+		starti
 	end
 
 	def get_color(fg, bg)