def __init__(self, texto="", numMaxLinhas=10, readOnly=False, parent=None): super().__init__(texto, numMaxLinhas=numMaxLinhas, readOnly=readOnly, parent=parent) self._scrollBar = ScrollBarConsole(numMaxLinhas + 1, 0, orientacao=ScrollBarConsole.VERTICAL) self._scrollBar.valorScrollModificado.connect(self._modificarLinhaAtual) self.posCursorAlterado.connect(lambda pos: self._alterarScrollBar())
class TextEditScrollConsole(TextEditConsole): def __init__(self, texto="", numMaxLinhas=10, readOnly=False, parent=None): super().__init__(texto, numMaxLinhas=numMaxLinhas, readOnly=readOnly, parent=parent) self._scrollBar = ScrollBarConsole(numMaxLinhas + 1, 0, orientacao=ScrollBarConsole.VERTICAL) self._scrollBar.valorScrollModificado.connect(self._modificarLinhaAtual) self.posCursorAlterado.connect(lambda pos: self._alterarScrollBar()) def focusNextChild(self): if self._scrollBar.hasFocus(): return False if self.hasFocus(): self._scrollBar.setFocus() else: self.setFocus() return True def focusPreviousChild(self): if self.hasFocus(): return False if self._scrollBar.hasFocus(): self.setFocus() else: self._scrollBar.setFocus() return True def indexChildActive(self): if self.hasFocus(): return 0 elif self._scrollBar.hasFocus(): return 1 else: return -1 def _modificarLinhaAtual(self, valor): self.setLinhaColuna(int(self.getNumMaxLinhas() / 2) + valor, self.indColunaAtual()) def _alterarScrollBar(self): self._scrollBar.setAteValor(max(0, self.numLinhas() - self.getNumMaxLinhas())) self._scrollBar.setValorAtual(self.indLinhaAtual() - int(self.getNumMaxLinhas() / 2)) def desenhoTela(self, tam): s = "" scroll = "" for i in self._scrollBar.desenhoTelaConsole(tam).split("\n"): scroll += "{0}|\n".format(i) scroll = "-|\n{0}-|".format(scroll).split("\n") tela = super().desenhoTela(tam - 3).split("\n") for i in range(len(tela)): s += "{0}{1}\n".format(tela[i], scroll[i]) if s.endswith("\n"): s = s[: len(s) - 1] return s