Class: StatusWindow

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



288
289
290
291
292
293
# File 'lib/rbhex/core/util/rdialogs.rb', line 288

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.



287
288
289
# File 'lib/rbhex/core/util/rdialogs.rb', line 287

def color_pair
  @color_pair
end

#hObject (readonly)

height, width, top row, left col of window



285
286
287
# File 'lib/rbhex/core/util/rdialogs.rb', line 285

def h
  @h
end

#leftObject (readonly)

height, width, top row, left col of window



285
286
287
# File 'lib/rbhex/core/util/rdialogs.rb', line 285

def left
  @left
end

#topObject (readonly)

height, width, top row, left col of window



285
286
287
# File 'lib/rbhex/core/util/rdialogs.rb', line 285

def top
  @top
end

#wObject (readonly)

height, width, top row, left col of window



285
286
287
# File 'lib/rbhex/core/util/rdialogs.rb', line 285

def w
  @w
end

#winObject (readonly)

Returns the value of attribute win.



286
287
288
# File 'lib/rbhex/core/util/rdialogs.rb', line 286

def win
  @win
end

Instance Method Details

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



294
295
296
297
298
299
300
301
# File 'lib/rbhex/core/util/rdialogs.rb', line 294

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



345
# File 'lib/rbhex/core/util/rdialogs.rb', line 345

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

#hideObject



346
347
348
349
# File 'lib/rbhex/core/util/rdialogs.rb', line 346

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.



331
332
333
334
335
336
337
338
339
340
341
342
# File 'lib/rbhex/core/util/rdialogs.rb', line 331

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



327
# File 'lib/rbhex/core/util/rdialogs.rb', line 327

def pause; @win.getchar; end

print given strings from first first column onwards



318
319
320
321
322
323
324
325
326
# File 'lib/rbhex/core/util/rdialogs.rb', line 318

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)



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

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



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

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