----Next_Part(Tue_Sep__2_12:55:41_1997)--
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit

¤³¤ó¤Ë¤Á¤Ï ¾®ß·@ÆüΩ ¤Ç¤¹¡£

From: Kikutani Makoto <kikutani / jdc.ericsson.se>
Subject: [ruby-list:3926] Curses (Re: document for beginner)
Date: Fri, 29 Aug 97 13:50:13 +0900

> Fri, Aug 29, 1997 at 12:54:15PM +0900 ¤Ë¤ª¤¤¤Æ
> Masaki Suketa ¤µ¤óÛ©¤¯:
> 
> > >curses¤Ê¤ó¤«¤Ï»È¤¤¤«¤¿¤¬¤ï¤«¤é¤Ê¤¤¤ó¤Ç¤¹¤±¤É¡£
> > »ä¤â»È¤¤Êý¤ï¤«¤é¤Ê¤«¤Ã¤¿¤ó¤Ç¡¢curses.c ¥Õ¥¡¥¤¥ë¤È C ¤Î curses 
> > library¤ÎÀâÌÀ¤¬ºÜ¤Ã¤Æ¤¿Ëܤò¸µ¤Ë¡¢»î¹Ôºø¸í¤·¤Þ¤·¤¿¡£
> > Â礷¤¿¤³¤È¤·¤Æ¤Ê¤¤¤ó¤Ç¤¹¤±¤É curses »È¤¦»²¹Í¤Ë¤Ê¤ì¤Ð¤È»×¤¤°Ê²¼¤Ë
> > ¥¹ÉÕ¤±¤Þ¤¹¡£

¤ï¤¿¤·¤âÃÙ¤ì¤Ð¤»¤Ê¤¬¤é curses ¤Î¥µ¥ó¥×¥ë¤ò·¤Þ¤¹¡¨Â
îãõòóåó­±®¹®¤Î¥¹¤Ë´Þ¤Þ¤ì¤Æ¤¤¤¿ C ¤Î¥µ¥ó¥×¥ë¤ò ruby
¤Ç­´¹¤¨¤¿¤â¤Î¤Ç¤¹¡¨Âòáéî®ã ¤È view.c ¤ÎÆó¤Ä¤À¤±¤Ç¤¹¡£

¤Ç¤Ï¤Ç¤Ï¡£
--
¾®ß· ¾´°ì         Keep it simple, stupid.
mailto:ozawa / omika.hitachi.co.jp



----Next_Part(Tue_Sep__2_12:55:41_1997)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Description: "rain.rb"

#!/usr/local/bin/ruby
# rain for a curses test

require "curses"
include Curses

def onsig(sig)
  close_screen
  exit sig
end

def ranf
  rand(32767).to_f / 32767
end

# main #
for i in 1 .. 15  # SIGHUP .. SIGTERM
  if trap(i, "SIG_IGN") !  then  # 0 for SIG_IGN
    trap(i) {|sig| onsig(sig) }
  end
end

init_screen
nl
noecho
srand

xpos  }
ypos  }
r  ines - 4
c  ols - 4
for i in 0 .. 4
  xpos[i]  c * ranf).to_i + 2
  ypos[i]  r * ranf).to_i + 2
end

i  
while TRUE
  x  c * ranf).to_i + 2
  y  r * ranf).to_i + 2


  setpos(y, x); addstr(".")

  setpos(ypos[i], xpos[i]); addstr("o")

  i  f i 0 then 4 else i - 1 end
  setpos(ypos[i], xpos[i]); addstr("O")

  i  f i 0 then 4 else i - 1 end
  setpos(ypos[i] - 1, xpos[i]);      addstr("-")
  setpos(ypos[i],     xpos[i] - 1); addstr("|.|")
  setpos(ypos[i] + 1, xpos[i]);      addstr("-")

  i  f i 0 then 4 else i - 1 end
  setpos(ypos[i] - 2, xpos[i]);       addstr("-")
  setpos(ypos[i] - 1, xpos[i] - 1);  addstr("/ \\")
  setpos(ypos[i],     xpos[i] - 2); addstr("| O |")
  setpos(ypos[i] + 1, xpos[i] - 1); addstr("\\ /")
  setpos(ypos[i] + 2, xpos[i]);       addstr("-")

  i  f i 0 then 4 else i - 1 end
  setpos(ypos[i] - 2, xpos[i]);       addstr(" ")
  setpos(ypos[i] - 1, xpos[i] - 1);  addstr("   ")
  setpos(ypos[i],     xpos[i] - 2); addstr("     ")
  setpos(ypos[i] + 1, xpos[i] - 1);  addstr("   ")
  setpos(ypos[i] + 2, xpos[i]);       addstr(" ")


  xpos[i]  
  ypos[i]  
  refresh
  sleep(0.5)
end

# end of main

----Next_Part(Tue_Sep__2_12:55:41_1997)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Description: "view.rb"

#!/usr/local/bin/ruby

require "curses"
include Curses

#
# main
#

if ARGV.size !  then
  printf("usage: view file\n");
  exit
end
begin
  fp  pen(ARGV[0], "r")
rescue
  raise "cannot open file: #{ARGV[1]}"
end

# signal(SIGINT, finish)

init_screen
#keypad(stdscr, TRUE)
nonl
cbreak
noecho
#scrollok(stdscr, TRUE)

# slurp the file
data_lines  ]
fp.each_line { |l|
  data_lines.push(l)
}
fp.close


lptr  
while TRUE
  i  
  while i < lines
    setpos(i, 0)
    #clrtoeol
    addstr(data_lines[lptr + i]) #if data_lines[lptr + i]
    i + 
  end

  explicit  ALSE
  n  
  while TRUE
    c  etch.chr
    if c "[0-9]" then
      n  0 * n + c.to_i
    else
      break
    end
  end

  n   if !explicit && n 0

  case c
  when "n"  #when KEY_DOWN
    i  
    while i < n
      if lptr + lines < data_lines.size then
	lptr + 
      else
	break
      end
      i +  
    end
    #wscrl(i)
      
  when "p"  #when KEY_UP
    i  
    while i < n
      if lptr > 0 then
	lptr - 
      else
	break
      end
      i +  
    end    
    #wscrl(-i)

  when "q"
    break
  end

end
close_screen

----Next_Part(Tue_Sep__2_12:55:41_1997)----