Browse Source

Added TextEdit wrap controls in the demo

pull/34/head
Eugenio Parodi 4 years ago
parent
commit
8a35349756
  1. 4
      TermTk/TTkWidgets/texedit.py
  2. 51
      demo/showcase/textedit.py

4
TermTk/TTkWidgets/texedit.py

@ -59,7 +59,7 @@ class _TTkTextEditView(TTkAbstractScrollView):
self._wrapWidth = 80
self._lastWrapUsed = 0
self._lineWrapMode = TTkK.NoWrap
self._wordWrapMode = TTkK.NoWrap
self._wordWrapMode = TTkK.WrapAnywhere
self._replace = False
self._cursorPos = (0,0)
self._selectionFrom = (0,0)
@ -106,7 +106,6 @@ class _TTkTextEditView(TTkAbstractScrollView):
text = TTkString() + text
self._dataLines += text.split('\n')
self._updateSize()
self.viewChanged.emit()
self._rewrap()
def _rewrap(self):
@ -143,6 +142,7 @@ class _TTkTextEditView(TTkAbstractScrollView):
self._lines.append((i,(fr,fr+to)))
l = l.substring(to)
fr += to
self.viewChanged.emit()
self.update()
for i,l in enumerate(self._dataLines):

51
demo/showcase/textedit.py

@ -44,7 +44,10 @@ def getSentence(a,b,i):
return ttk.TTkString(" ").join([f"{i} "]+[getWord() for i in range(0,random.randint(a,b))])
def demoTextEdit(root=None):
te = ttk.TTkTextEdit(parent=root)
frame = ttk.TTkFrame(parent=root, border=False, layout=ttk.TTkGridLayout())
te = ttk.TTkTextEdit()
te.setReadOnly(False)
te.setText(ttk.TTkString("Text Edit DEMO\n",ttk.TTkColor.UNDERLINE+ttk.TTkColor.BOLD+ttk.TTkColor.ITALIC))
@ -71,14 +74,54 @@ def demoTextEdit(root=None):
te.append(ttk.TTkString('\n').join([ getSentence(5,25,i) for i in range(50)]))
# use the widget size to wrap
te.setLineWrapMode(ttk.TTkK.WidgetWidth)
te.setWordWrapMode(ttk.TTkK.WordWrap)
# te.setLineWrapMode(ttk.TTkK.WidgetWidth)
# te.setWordWrapMode(ttk.TTkK.WordWrap)
# Use a fixed wrap size
# te.setLineWrapMode(ttk.TTkK.FixedWidth)
# te.setWrapWidth(100)
return te
frame.layout().addWidget(te,1,0,1,6)
frame.layout().addWidget(ttk.TTkLabel(text="Wrap: ", maxWidth=6),0,0)
frame.layout().addWidget(lineWrap := ttk.TTkComboBox(list=['NoWrap','WidgetWidth','FixedWidth']),0,1)
frame.layout().addWidget(ttk.TTkLabel(text=" Type: ",maxWidth=7),0,2)
frame.layout().addWidget(wordWrap := ttk.TTkComboBox(list=['WordWrap','WrapAnywhere'], enabled=False),0,3)
frame.layout().addWidget(ttk.TTkLabel(text=" FixW: ",maxWidth=7),0,4)
frame.layout().addWidget(fixWidth := ttk.TTkSpinBox(value=te.wrapWidth(), maximum=500, minimum=10, enabled=False),0,5)
lineWrap.setCurrentIndex(0)
wordWrap.setCurrentIndex(1)
fixWidth.valueChanged.connect(te.setWrapWidth)
@ttk.pyTTkSlot(int)
def _lineWrapCallback(index):
if index == 0:
te.setLineWrapMode(ttk.TTkK.NoWrap)
wordWrap.setDisabled()
fixWidth.setDisabled()
elif index == 1:
te.setLineWrapMode(ttk.TTkK.WidgetWidth)
wordWrap.setEnabled()
fixWidth.setDisabled()
else:
te.setLineWrapMode(ttk.TTkK.FixedWidth)
wordWrap.setEnabled()
fixWidth.setEnabled()
lineWrap.currentIndexChanged.connect(_lineWrapCallback)
@ttk.pyTTkSlot(int)
def _wordWrapCallback(index):
if index == 0:
te.setWordWrapMode(ttk.TTkK.WordWrap)
else:
te.setWordWrapMode(ttk.TTkK.WrapAnywhere)
wordWrap.currentIndexChanged.connect(_wordWrapCallback)
return frame
def main():
parser = argparse.ArgumentParser()

Loading…
Cancel
Save