code: def make_viewer(self, vname, channel):
          
          if vname not in self.viewer_db:
              raise ValueError("I don't know how to build a '%s' viewer" % (
                  vname))
  
          stk_w = channel.widget
  
          bnch = self.viewer_db[vname]
  
          viewer = bnch.vclass(logger=self.logger,
                               settings=channel.settings)
          stk_w.add_widget(viewer.get_widget(), title=vname)
  
          # let the GUI respond to this widget addition
          self.update_pending()
  
          # let the channel object do any necessary initialization
          channel.connect_viewer(viewer)
  
          # finally, let the viewer do any viewer-side initialization
          viewer.initialize_channel(self, channel)
docs: Make a viewer whose type name is `vname` and add it to `channel`.