class CursesCounter

Public Class Methods

new(countup,counttime) click to toggle source
# File lib/ScreenTimer.rb, line 72
def initialize(countup,counttime)
        if countup == true or countup == false then
                @countup = countup
        else
                raise(ArgumentError,"CursesCounter::initialize argument error.")
        end

        if countup == false then
                @countt = counttime
        else
                @countt = 0
        end
        Curses::init_screen
        Curses::setpos(0,0)
        if countup == true then
                Curses::addstr("Count UP")
        else
                Curses::addstr("Count Down")
        end
        Curses::refresh
end

Public Instance Methods

start() click to toggle source
# File lib/ScreenTimer.rb, line 94
def start()
        Curses::noecho
        Curses::noraw
        Curses::crmode
        Curses::setpos(1,0)
        Curses::addstr("Please any key to start.")
        Curses::refresh
        Curses::getch
        Curses::deleteln
        Curses::refresh
        self.timer
end
timerend() click to toggle source
# File lib/ScreenTimer.rb, line 195
def timerend()
        Curses::refresh
        Curses::close_screen
end

Protected Instance Methods

cdown() click to toggle source
# File lib/ScreenTimer.rb, line 158
def cdown()
        Signal.trap(:INT){exit(0)}
        Signal.trap(:TERM){}
        Signal.trap(:HUP){}
        r = secto(@countt)
        @countt.downto(0) do |x|
                Curses::setpos((Curses::lines / 2) + 1,Curses::cols / 2)
                Curses::deleteln
                Curses::addstr(r[:h].to_s + ":" + r[:m].to_s + ":" + r[:s].to_s + " || " + x.to_s)
                Curses::refresh
                sleep 1
                #r[:s] -= 1
                if r[:s] == 0 then
                        if r[:m] > 0 then
                                r[:m] -= 1
                                r[:s] = 60
                        elsif r[:m] == 0 and r[:h] > 0 then
                                r[:h] -= 1
                                r[:m] += 59
                                r[:s] = 60
                        else
                                break
                        end
                end
                if r[:m] == 0 then
                        if r[:h] > 0 then
                                r[:h] -= 1
                                r[:m] = 60
                        else
                                break if r[:s] == 0
                        end
                end
                r[:s] -= 1
        end
end
cup() click to toggle source
# File lib/ScreenTimer.rb, line 131
def cup()
        Curses::setpos(Curses::lines / 2,Curses::cols / 2)
        Signal.trap(:INT){Curses::setpos(Curses::lines,0);Curses::addstr("STOP!!");sleep(1);cup_exit()}
        Signal.trap(:TERM){}
        Signal.trap(:HUP){}
        s,m,h = 0,0,0
        loop do
                Curses::setpos((Curses::lines / 2) + 1,Curses::cols / 2)
                if s % 60 == 0  and s != 0 then
                        s = 0
                        m += 1
                end  
                if m % 60 == 0 and m != 0 then
                        m = 0
                        h += 1
                end
                Curses::deleteln
                Curses::addstr(h.to_s + " : " + m.to_s + " : " + s.to_s + " || " + @countt.to_s)
                @countt += 1
                s += 1
                Curses::refresh
                sleep 1
        end
end
cup_exit() click to toggle source
# File lib/ScreenTimer.rb, line 122
def cup_exit()
        Curses::close_screen()
        print "TOTAL = " + @countt.to_s + "[s]\n"
        h = secto(@countt)
        print h[:h].to_s + "[h] " + h[:m].to_s + "[m] " + h[:s].to_s + "[s]\n"
        exit 0
end
timer() click to toggle source
# File lib/ScreenTimer.rb, line 107
def timer()
        Curses::standout
        Curses::noraw

        if @countup == true then
                self.cup()
        else
                self.cdown()
        end
        Curses::beep
        Curses::beep
        Curses::flash
end