def data_changed list
      sz = list.size
      @source.text(list)
      wh = @source.form.window.height
      @source.form.window.hide
      th = @source.height
      sh = Ncurses.LINES-1
      if sz < @maxht
        # rows is less than tp size so reduce tp and window
        @source.height = sz
        nl = _new_layout sz+1
        $log.debug "XXX:  adjust ht to #{sz} layout is #{nl} size is #{sz}"
        @source.form.window.resize_with(nl)
        #Window.refresh_all
      else
        # expand the window ht to maxht
        tt = @maxht-1
        @source.height = tt
        nl = _new_layout tt+1
        $log.debug "XXX:  increase ht to #{tt} def layout is #{nl} size is #{sz}"
        @source.form.window.resize_with(nl)
      end

      @source.fire_dimension_changed

      @source.init_vars # do if rows is less than current_index.
      @source.set_form_row
      @source.form.window.show

      #Window.refresh_all
      @source.form.window.wrefresh
      Ncurses::Panel.update_panels();
      Ncurses.doupdate();
    end
def data_changed list
      sz = list.size
      @source.text(list)
      wh = @source.form.window.height
      @source.form.window.hide
      th = @source.height
      sh = Ncurses.LINES-1
      if sz < @maxht
        # rows is less than tp size so reduce tp and window
        @source.height = sz
        nl = _new_layout sz+1
        $log.debug "XXX:  adjust ht to #{sz} layout is #{nl} size is #{sz}"
        @source.form.window.resize_with(nl)
        #Window.refresh_all
      else
        # expand the window ht to maxht
        tt = @maxht-1
        @source.height = tt
        nl = _new_layout tt+1
        $log.debug "XXX:  increase ht to #{tt} def layout is #{nl} size is #{sz}"
        @source.form.window.resize_with(nl)
      end

      @source.fire_dimension_changed

      @source.init_vars # do if rows is less than current_index.
      @source.set_form_row
      @source.form.window.show

      #Window.refresh_all
      @source.form.window.wrefresh
      Ncurses::Panel.update_panels();
      Ncurses.doupdate();
    end
specify command to requery data
def command &block
@command = block
end
alias :command= :command
 signal that the data has changed and should be redisplayed
 with window resizing etc.