# File gtk/sample/gtk-demo/main.rb, line 261
    def load_file(filename)
      if filename == @current_file
        return
      end

      @info_buffer.delete(*@info_buffer.bounds)

      @source_buffer.delete(*@source_buffer.bounds)

      file = begin
               File.open(filename)
             rescue
               $stderr.puts "Cannot open: #{$!}" if $DEBUG
               return
             end
      start = @info_buffer.get_iter_at_offset(0)
      state = :before_header

      file.each do |line|
        case state
        when :before_header
          if line =~ /^=begin$/
            state = :in_header
          end
        when :in_header
          if line =~ /^=end$/
            state = :body
            start = @source_buffer.get_iter_at_offset(0)
          elsif line =~ /^=\s+(.*)$/
            title = $1
            title.gsub!(/\s*\(.*\)$/, '') # Delete depend field

            last = start

            @info_buffer.insert(last, title)
            start = last.clone

            start.backward_chars(title.length)
            @info_buffer.apply_tag('title', start, last)

            start = last
          else
            @info_buffer.insert(start, line)
          end
        when :body  # Reading program body
          @source_buffer.insert(start, line)
        end
      end

      fontify

      @current_file = filename
    end