def layout(self):
    'Change self and sub-windows to fit within the given rectangle.'
    (top, left, rows, cols) = self.outerShape
    lineNumbersCols = 7
    topRows = self.topRows
    bottomRows = max(1, self.interactiveFind.preferredSize(rows, cols)[0])
    self.logoCorner.reshape(top, left, 2, lineNumbersCols)
    if (self.showTopInfo and (rows > topRows) and (cols > lineNumbersCols)):
        self.topInfo.reshape(top, (left + lineNumbersCols), topRows, (cols - lineNumbersCols))
        top += topRows
        rows -= topRows
    rows -= bottomRows
    bottomFirstRow = (top + rows)
    self.confirmClose.reshape(bottomFirstRow, left, bottomRows, cols)
    self.confirmOverwrite.reshape(bottomFirstRow, left, bottomRows, cols)
    self.interactivePrediction.reshape(bottomFirstRow, left, bottomRows, cols)
    self.interactivePrompt.reshape(bottomFirstRow, left, bottomRows, cols)
    self.interactiveQuit.reshape(bottomFirstRow, left, bottomRows, cols)
    if self.showMessageLine:
        self.messageLine.reshape(bottomFirstRow, left, bottomRows, cols)
    self.interactiveFind.reshape(bottomFirstRow, left, bottomRows, cols)
    if 1:
        self.interactiveGoto.reshape(bottomFirstRow, left, bottomRows, cols)
    if (self.showFooter and (rows > 0)):
        self.statusLine.reshape((bottomFirstRow - self.statusLineCount), left, self.statusLineCount, cols)
        rows -= self.statusLineCount
    if (self.showLineNumbers and (cols > lineNumbersCols)):
        self.lineNumberColumn.reshape(top, left, rows, lineNumbersCols)
        cols -= lineNumbersCols
        left += lineNumbersCols
    if (self.showRightColumn and (cols > 0)):
        self.rightColumn.reshape(top, ((left + cols) - 1), rows, 1)
        cols -= 1
    Window.reshape(self, top, left, rows, cols)
Change self and sub-windows to fit within the given rectangle.
def layout(self):
    
    (top, left, rows, cols) = self.outerShape
    lineNumbersCols = 7
    topRows = self.topRows
    bottomRows = max(1, self.interactiveFind.preferredSize(rows, cols)[0])
    self.logoCorner.reshape(top, left, 2, lineNumbersCols)
    if (self.showTopInfo and (rows > topRows) and (cols > lineNumbersCols)):
        self.topInfo.reshape(top, (left + lineNumbersCols), topRows, (cols - lineNumbersCols))
        top += topRows
        rows -= topRows
    rows -= bottomRows
    bottomFirstRow = (top + rows)
    self.confirmClose.reshape(bottomFirstRow, left, bottomRows, cols)
    self.confirmOverwrite.reshape(bottomFirstRow, left, bottomRows, cols)
    self.interactivePrediction.reshape(bottomFirstRow, left, bottomRows, cols)
    self.interactivePrompt.reshape(bottomFirstRow, left, bottomRows, cols)
    self.interactiveQuit.reshape(bottomFirstRow, left, bottomRows, cols)
    if self.showMessageLine:
        self.messageLine.reshape(bottomFirstRow, left, bottomRows, cols)
    self.interactiveFind.reshape(bottomFirstRow, left, bottomRows, cols)
    if 1:
        self.interactiveGoto.reshape(bottomFirstRow, left, bottomRows, cols)
    if (self.showFooter and (rows > 0)):
        self.statusLine.reshape((bottomFirstRow - self.statusLineCount), left, self.statusLineCount, cols)
        rows -= self.statusLineCount
    if (self.showLineNumbers and (cols > lineNumbersCols)):
        self.lineNumberColumn.reshape(top, left, rows, lineNumbersCols)
        cols -= lineNumbersCols
        left += lineNumbersCols
    if (self.showRightColumn and (cols > 0)):
        self.rightColumn.reshape(top, ((left + cols) - 1), rows, 1)
        cols -= 1
    Window.reshape(self, top, left, rows, cols)