Browse Source

Trying to use TTkString inside gittk

pull/16/head
Eugenio Parodi 5 years ago
parent
commit
0e4f79edd8
  1. 3
      TermTk/TTkCore/string.py
  2. 9
      TermTk/TTkWidgets/texedit.py
  3. 4
      demo/gittk.py
  4. 6
      tests/test.draw.003.py

3
TermTk/TTkCore/string.py

@ -34,6 +34,9 @@ class TTkString():
self._text = "" self._text = ""
self._colors = [] self._colors = []
def __len__(self):
return len(self._text)
def __str__(self): def __str__(self):
return self._text return self._text

9
TermTk/TTkWidgets/texedit.py

@ -27,6 +27,7 @@ from TermTk.TTkCore.log import TTkLog
from TermTk.TTkWidgets.widget import * from TermTk.TTkWidgets.widget import *
from TermTk.TTkLayouts.gridlayout import TTkGridLayout from TermTk.TTkLayouts.gridlayout import TTkGridLayout
from TermTk.TTkCore.color import TTkColor from TermTk.TTkCore.color import TTkColor
from TermTk.TTkCore.string import TTkString
from TermTk.TTkWidgets.scrollbar import TTkScrollBar from TermTk.TTkWidgets.scrollbar import TTkScrollBar
from TermTk.TTkAbstract.abstractscrollarea import TTkAbstractScrollArea from TermTk.TTkAbstract.abstractscrollarea import TTkAbstractScrollArea
from TermTk.TTkAbstract.abstractscrollview import TTkAbstractScrollView from TermTk.TTkAbstract.abstractscrollview import TTkAbstractScrollView
@ -41,13 +42,13 @@ class _TTkTextEditView(TTkAbstractScrollView):
@pyTTkSlot(str) @pyTTkSlot(str)
def setText(self, text): def setText(self, text):
self._lines = [(TTkColor.RST, line) for line in text.split('\n')] self._lines = [line for line in text.split('\n')]
self.viewMoveTo(0, 0) self.viewMoveTo(0, 0)
self.viewChanged.emit() self.viewChanged.emit()
self.update() self.update()
@pyTTkSlot(str) @pyTTkSlot(str)
def setColoredLines(self, lines): def setLines(self, lines):
self._lines = lines self._lines = lines
self.viewMoveTo(0, 0) self.viewMoveTo(0, 0)
self.viewChanged.emit() self.viewChanged.emit()
@ -62,7 +63,7 @@ class _TTkTextEditView(TTkAbstractScrollView):
def paintEvent(self): def paintEvent(self):
_, oy = self.getViewOffsets() _, oy = self.getViewOffsets()
for y, t in enumerate(self._lines[oy:]): for y, t in enumerate(self._lines[oy:]):
self._canvas.drawText(pos=(0,y), text=t[1], color=t[0]) self._canvas.drawText(pos=(0,y), text=t)
class TTkTextEdit(TTkAbstractScrollArea): class TTkTextEdit(TTkAbstractScrollArea):
__slots__ = ('_textEditView', 'setText', 'setColoredLines') __slots__ = ('_textEditView', 'setText', 'setColoredLines')
@ -72,4 +73,4 @@ class TTkTextEdit(TTkAbstractScrollArea):
self._textEditView = _TTkTextEditView() self._textEditView = _TTkTextEditView()
self.setViewport(self._textEditView) self.setViewport(self._textEditView)
self.setText = self._textEditView.setText self.setText = self._textEditView.setText
self.setColoredLines = self._textEditView.setColoredLines self.setLines = self._textEditView.setLines

4
demo/gittk.py

@ -93,8 +93,8 @@ def _tableCallback(val):
color = ttk.TTkColor.fg('#ff0000') color = ttk.TTkColor.fg('#ff0000')
elif line.startswith('@@'): elif line.startswith('@@'):
color = ttk.TTkColor.fg('#0088ff') color = ttk.TTkColor.fg('#0088ff')
lines.append((color,line)) lines.append(ttk.TTkString() + color + line)
diffText.setColoredLines(lines) diffText.setLines(lines)
tableCommit.activated.connect(_tableCallback) tableCommit.activated.connect(_tableCallback)

6
tests/test.draw.003.py

@ -38,9 +38,9 @@ TTkLog.use_default_file_logging()
Term.init(mouse=False) Term.init(mouse=False)
TTkLog.info("Starting") TTkLog.info("Starting")
s1 = TTkString() + "Text " + "Text 1" s1 = TTkString() + "Text " + "Text 1"
s2 = TTkString() + TTkColor.fg("#ff0000") + "Test " + "Text 2" s2 = TTkString() + TTkColor.fg("#ff0000") + "Test " + "Text 2"
s3 = TTkString() + TTkColor.bg("#550088") + "Test " + "Text 3" s3 = TTkString() + TTkColor.bg("#550088") + "Test " + "Text 3"
s4 = TTkString() + ( TTkColor.fg("#00ff00") + s4 = TTkString() + ( TTkColor.fg("#00ff00") +
TTkColor.bg("#555500") ) + "Test " + TTkColor.bg("#880055") + "Text 4" TTkColor.bg("#555500") ) + "Test " + TTkColor.bg("#880055") + "Text 4"

Loading…
Cancel
Save