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.



292
293
294
295
296
297
# File 'lib/canis/core/util/rdialogs.rb', line 292

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.



291
292
293
# File 'lib/canis/core/util/rdialogs.rb', line 291

def color_pair
  @color_pair
end

#hObject (readonly)

— {{{



289
290
291
# File 'lib/canis/core/util/rdialogs.rb', line 289

def h
  @h
end

#leftObject (readonly)

— {{{



289
290
291
# File 'lib/canis/core/util/rdialogs.rb', line 289

def left
  @left
end

#topObject (readonly)

— {{{



289
290
291
# File 'lib/canis/core/util/rdialogs.rb', line 289

def top
  @top
end

#wObject (readonly)

— {{{



289
290
291
# File 'lib/canis/core/util/rdialogs.rb', line 289

def w
  @w
end

#winObject (readonly)

Returns the value of attribute win.



290
291
292
# File 'lib/canis/core/util/rdialogs.rb', line 290

def win
  @win
end

Instance Method Details

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



298
299
300
301
302
303
304
305
# File 'lib/canis/core/util/rdialogs.rb', line 298

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



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

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

#hideObject



350
351
352
353
# File 'lib/canis/core/util/rdialogs.rb', line 350

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.



335
336
337
338
339
340
341
342
343
344
345
346
# File 'lib/canis/core/util/rdialogs.rb', line 335

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



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

def pause; @win.getchar; end

print given strings from first first column onwards



322
323
324
325
326
327
328
329
330
# File 'lib/canis/core/util/rdialogs.rb', line 322

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)



311
312
313
314
315
316
317
318
319
320
# File 'lib/canis/core/util/rdialogs.rb', line 311

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



354
355
356
357
# File 'lib/canis/core/util/rdialogs.rb', line 354

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