Class: StatusWindow

Inherits:
Object show all
Defined in:
lib/rbcurse/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.



279
280
281
282
283
284
# File 'lib/rbcurse/core/util/rdialogs.rb', line 279

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.



278
279
280
# File 'lib/rbcurse/core/util/rdialogs.rb', line 278

def color_pair
  @color_pair
end

#hObject (readonly)

height, width, top row, left col of window



276
277
278
# File 'lib/rbcurse/core/util/rdialogs.rb', line 276

def h
  @h
end

#leftObject (readonly)

height, width, top row, left col of window



276
277
278
# File 'lib/rbcurse/core/util/rdialogs.rb', line 276

def left
  @left
end

#topObject (readonly)

height, width, top row, left col of window



276
277
278
# File 'lib/rbcurse/core/util/rdialogs.rb', line 276

def top
  @top
end

#wObject (readonly)

height, width, top row, left col of window



276
277
278
# File 'lib/rbcurse/core/util/rdialogs.rb', line 276

def w
  @w
end

#winObject (readonly)

Returns the value of attribute win.



277
278
279
# File 'lib/rbcurse/core/util/rdialogs.rb', line 277

def win
  @win
end

Instance Method Details

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



285
286
287
288
289
290
291
292
# File 'lib/rbcurse/core/util/rdialogs.rb', line 285

def create_window h = 2 , w = Ncurses.COLS-0, t = Ncurses.LINES-2, l = 0
  return @win if @win
  @win = VER::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



336
# File 'lib/rbcurse/core/util/rdialogs.rb', line 336

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

#hideObject



337
338
339
340
# File 'lib/rbcurse/core/util/rdialogs.rb', line 337

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.



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

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



318
# File 'lib/rbcurse/core/util/rdialogs.rb', line 318

def pause; @win.getchar; end

print given strings from first first column onwards



309
310
311
312
313
314
315
316
317
# File 'lib/rbcurse/core/util/rdialogs.rb', line 309

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)



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

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



341
342
343
344
# File 'lib/rbcurse/core/util/rdialogs.rb', line 341

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