def select_first_field
      # this results in on_leave of last field being executed when form starts.
      #@active_index = -1 # FIXME HACK
      #select_next_field
      ix =  @focusables.first
      return unless ix # no focussable field

      # if the user is on a field other than current then fire on_leave
      if @active_index.nil? || @active_index < 0
      elsif @active_index != ix
        f = @widgets[@active_index]
        begin
          #$log.debug " select first field, calling on_leave of #{f} #{@active_index} "
          on_leave f
        rescue => err
         $log.error " Caught EXCEPTION select_first_field on_leave #{err}"
         Ncurses.beep
         #$error_message = "#{err}"
         $error_message.value = "#{err}"
         return
        end
      end
      select_field ix
    end
def select_first_field
      # this results in on_leave of last field being executed when form starts.
      #@active_index = -1 # FIXME HACK
      #select_next_field
      ix =  @focusables.first
      return unless ix # no focussable field

      # if the user is on a field other than current then fire on_leave
      if @active_index.nil? || @active_index < 0
      elsif @active_index != ix
        f = @widgets[@active_index]
        begin
          #$log.debug " select first field, calling on_leave of #{f} #{@active_index} "
          on_leave f
        rescue => err
         $log.error " Caught EXCEPTION select_first_field on_leave #{err}"
         Ncurses.beep
         #$error_message = "#{err}"
         $error_message.value = "#{err}"
         return
        end
      end
      select_field ix
    end
take focus to first focussable field
 we shoud not send to select_next. have a separate method to avoid bugs.
 but check current_field, in case called from anotehr field TODO FIXME