Class: StatusWindow

Inherits:
Object show all
Defined in:
lib/canis/core/util/rdialogs.rb

Overview

TODO: add option of putting progress_bar

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config = {}, &block) ⇒ StatusWindow

Returns a new instance of StatusWindow.



377
378
379
380
381
382
# File 'lib/canis/core/util/rdialogs.rb', line 377

def initialize config={}, &block
  @color_pair = config[:color_pair]
  @row_offset = config[:row_offset] || 0
  @col_offset = config[:col_offset] || 0
  create_window *config[:layout]
end

Instance Attribute Details

#color_pairObject

Returns the value of attribute color_pair.



376
377
378
# File 'lib/canis/core/util/rdialogs.rb', line 376

def color_pair
  @color_pair
end

#hObject (readonly)

— {{{



374
375
376
# File 'lib/canis/core/util/rdialogs.rb', line 374

def h
  @h
end

#leftObject (readonly)

— {{{



374
375
376
# File 'lib/canis/core/util/rdialogs.rb', line 374

def left
  @left
end

#topObject (readonly)

— {{{



374
375
376
# File 'lib/canis/core/util/rdialogs.rb', line 374

def top
  @top
end

#wObject (readonly)

— {{{



374
375
376
# File 'lib/canis/core/util/rdialogs.rb', line 374

def w
  @w
end

#winObject (readonly)

Returns the value of attribute win.



375
376
377
# File 'lib/canis/core/util/rdialogs.rb', line 375

def win
  @win
end

Instance Method Details

#create_window(h = 2, w = Ncurses.COLS-0, t = Ncurses.LINES-2, l = 0) ⇒ Object



383
384
385
386
387
388
389
390
# File 'lib/canis/core/util/rdialogs.rb', line 383

def create_window h = 2 , w = Ncurses.COLS-0, t = Ncurses.LINES-2, l = 0
  return @win if @win
  @win = Canis::Window.new(h, w , t, l)
  @h = h ; @w = w; @top = t ; @left = l
  @color_pair ||= get_color($promptcolor, 'white','black')
  @win.bkgd(Ncurses.COLOR_PAIR(@color_pair));
  @win
end

#destroyObject

caller must destroy after he’s finished printing messages, unless user calls linger



434
# File 'lib/canis/core/util/rdialogs.rb', line 434

def destroy; @win.destroy if @win; @win = nil;  end

#hideObject



435
436
437
438
# File 'lib/canis/core/util/rdialogs.rb', line 435

def hide
  @win.hide
  @visible = false
end

#linger(caller_window = nil) ⇒ Object

pauses with the message, but doesn’t ask the user to press a key. If he does, the key should be used by underlying window. Do not call destroy if you call linger, it does the destroy.



420
421
422
423
424
425
426
427
428
429
430
431
# File 'lib/canis/core/util/rdialogs.rb', line 420

def linger caller_window=nil
  begin
    if caller_window
      ch = @win.getchar
      caller_window.ungetch(ch) # will this be available to underlying window XXX i think not !!
    else
      sleep 1
    end
  ensure
    destroy
  end
end

#pauseObject



416
# File 'lib/canis/core/util/rdialogs.rb', line 416

def pause; @win.getchar; end

print given strings from first first column onwards



407
408
409
410
411
412
413
414
415
# File 'lib/canis/core/util/rdialogs.rb', line 407

def print *textarray
  create_window unless @win
  show unless @visible
  c = 1
  textarray.each_with_index { |s, i|  
    @win.printstring i+@row_offset, c+@col_offset, "%-*s" % [@w-(@col_offset*2)-c, s], @color_pair
  }
  @win.wrefresh
end

#printstring(r, c, text, color_pair = @color_pair) ⇒ Object

creates a color pair based on given bg and fg colors as strings def set_colors bgcolor, fgcolor=‘white’ end prints a string on given row (0 or 1)



396
397
398
399
400
401
402
403
404
405
# File 'lib/canis/core/util/rdialogs.rb', line 396

def printstring r, c, text, color_pair=@color_pair
  create_window unless @win
  show unless @visible
  r = @h-1 if r > @h-1
  #@win.printstring r, c, ' '*@w, @color_pair
  # FIXME this padding overwrites the border and the offset means next line wiped
  # However, now it may now totally clear a long line.
  @win.printstring r+@row_offset, c+@col_offset, "%-*s" % [@w-(@col_offset*2)-c, text], color_pair
  @win.wrefresh
end

#showObject



439
440
441
442
# File 'lib/canis/core/util/rdialogs.rb', line 439

def show
  @win.show unless @visible
  @visible = true
end