code: def show_notification(self, message, timeout=None, style='Info'):
          
  
          assert style in ('Info', 'Warning', 'Error', 'Success')
  
          if isinstance(message, six.string_types):
              message = message.splitlines()
  
          n_rows, n_cols = self.stdscr.getmaxyx()
          v_offset, h_offset = self.stdscr.getbegyx()
  
          box_width = max(len(m) for m in message) + 2
          box_height = len(message) + 2
  
          # Cut off the lines of the message that don't fit on the screen
          box_width = min(box_width, n_cols)
          box_height = min(box_height, n_rows)
          message = message[:box_height - 2]
  
          s_row = (n_rows - box_height) // 2 + v_offset
          s_col = (n_cols - box_width) // 2 + h_offset
  
          window = curses.newwin(box_height, box_width, s_row, s_col)
          window.bkgd(str(' '), self.attr('Notice{0}'.format(style)))
          window.erase()
          window.border()
  
          for index, line in enumerate(message, start=1):
              self.add_line(window, line, index, 1)
          window.refresh()
  
          ch, start = -1, time.time()
          with self.no_delay():
              while timeout is None or time.time() - start < timeout:
                  ch = self.getch()
                  if ch != -1:
                      break
                  time.sleep(0.01)
  
          window.clear()
          del window
          self.stdscr.touchwin()
          self.stdscr.refresh()
  
          return ch
docs: Overlay a message box on the center of the screen and wait for input.
  
          Params:
              message (list or string): List of strings, one per line.
              timeout (float): Optional, maximum length of time that the message
                  will be shown before disappearing.
              style (str): The theme element that will be applied to the
                  notification window