# File gtk/sample/gtk-demo/textview.rb, line 333
    def attach_widgets(text_view)
      
      buffer = text_view.buffer;

      iter = buffer.start_iter

      i = 0;
      while find_anchor(iter) do
        anchor = iter.child_anchor

        if  i == 0 
          widget = Gtk::Button.new("Click Me")
          widget.signal_connect('clicked') { |button|
            if @@nest_window and ! @@nest_window.destroyed?
              @@nest_window.present
              break
            end
            
            buffer = Gtk::TextBuffer.new
            iter = buffer.start_iter

            buffer.insert(iter, "This buffer is shared by a set of nested text views.\n Nested view:\n")
            anchor = buffer.create_child_anchor(iter)
            buffer.insert(iter, "\nDon't do this in real applications, please.\n")

            view = Gtk::TextView.new(buffer)
            
            recursive_attach_view(0, view, anchor)
            
            @@nest_window = Gtk::Window.new(Gtk::Window::TOPLEVEL)
            sw = Gtk::ScrolledWindow.new(nil, nil)
            sw.set_policy(Gtk::POLICY_AUTOMATIC,
                          Gtk::POLICY_AUTOMATIC)

            @@nest_window.add(sw)
            sw.add(view)

            @@nest_window.set_default_size(300, 400)
            @@nest_window.show_all
          }
        elsif i == 1
          menu = Gtk::Menu.new
          widget = Gtk::OptionMenu.new

          menu_item = Gtk::MenuItem.new("Option 1")
          menu.append(menu_item)
          menu_item = Gtk::MenuItem.new("Option 2")
          menu.append(menu_item)
          menu_item = Gtk::MenuItem.new("Option 3")
          menu.append(menu_item)

          widget.menu = menu

        elsif i == 2
          widget = Gtk::HScale.new
          widget.set_range(0, 100)
          widget.set_size_request(70, -1)

        elsif i == 3
          filename = Demo.find_file("floppybuddy.gif")
          widget = Gtk::Image.new(filename)

        elsif i == 4
          widget = Gtk::Entry.new

        else
          #widget = nil;  avoids a compiler warning 
          #g_assert_not_reached ;
        end

        text_view.add_child_at_anchor(widget,
                                      anchor)

        widget.show_all 
        i += 1
      end
    end