Browse Source

TextEdit, allow customization of TextEditView,

pyTtkSignal, fix remove signal
pull/64/head
Eugenio Parodi 3 years ago
parent
commit
de5bbac1f9
  1. 6
      TermTk/TTkAbstract/abstractscrollarea.py
  2. 3
      TermTk/TTkCore/signal.py
  3. 1
      TermTk/TTkCore/timer.py
  4. 15
      TermTk/TTkWidgets/tabwidget.py
  5. 9
      TermTk/TTkWidgets/texedit.py
  6. 1
      docs/MDNotes/TODO.md

6
TermTk/TTkAbstract/abstractscrollarea.py

@ -37,6 +37,7 @@ class TTkAbstractScrollArea(TTkWidget):
'_horizontalScrollBar', '_horizontalScrollBarPolicy',)
def __init__(self, *args, **kwargs):
self._viewport = None
super().__init__(*args, **kwargs)
self._name = kwargs.get('name' , 'TTkAbstractScrollArea')
self.setLayout(TTkGridLayout())
@ -116,3 +117,8 @@ class TTkAbstractScrollArea(TTkWidget):
def viewport(self):
return self._viewport
def update(self, repaint=True, updateLayout=False, updateParent=False):
if self._viewport:
self._viewport.update(repaint, updateLayout, updateParent)
return super().update(repaint, updateLayout, updateParent)

3
TermTk/TTkCore/signal.py

@ -113,7 +113,8 @@ class _pyTTkSignal_obj():
def disconnect(self, *args, **kwargs):
for slot in args:
self._connected_slots.remove(slot)
if slot in self._connected_slots:
self._connected_slots.remove(slot)
def emit(self, *args, **kwargs):
if len(args) != len(self._types):

1
TermTk/TTkCore/timer.py

@ -107,6 +107,7 @@ else:
def quit(self):
self._quit.set()
self._delay=1
self._timerEvent.set()
def run(self):

15
TermTk/TTkWidgets/tabwidget.py

@ -269,7 +269,7 @@ class TTkTabBar(TTkWidget):
self._updateTabs()
def addTab(self, label, data=None):
self.insertTab(len(self._tabButtons), label, data)
return self.insertTab(len(self._tabButtons), label, data)
def insertTab(self, index, label, data=None):
if index <= self._currentIndex:
@ -281,6 +281,7 @@ class TTkTabBar(TTkWidget):
button.clicked.connect(lambda :self.setCurrentIndex(self._tabButtons.index(button)))
button.closeClicked.connect(lambda :self.tabCloseRequested.emit(self._tabButtons.index(button)))
self._updateTabs()
return index
@pyTTkSlot(int)
def removeTab(self, index):
@ -295,10 +296,10 @@ class TTkTabBar(TTkWidget):
self._highlighted = self._currentIndex
self._updateTabs()
def data(self, index):
def tabData(self, index):
return self._tabData[index]
def setData(self, index, data):
def setTabData(self, index, data):
self._tabData[index] = data
def borderColor(self):
@ -472,7 +473,7 @@ class TTkTabWidget(TTkFrame):
'currentChanged', 'tabBarClicked',
# forward methods
'tabsClosable', 'setTabsClosable',
'data', 'setData',
'tabData', 'setData',
'currentIndex', 'setCurrentIndex', 'tabCloseRequested')
def __init__(self, *args, **kwargs):
@ -507,8 +508,8 @@ class TTkTabWidget(TTkFrame):
# forwarded methods
self.currentIndex = self._tabBar.currentIndex
self.setCurrentIndex = self._tabBar.setCurrentIndex
self.data = self._tabBar.data
self.setData = self._tabBar.setData
self.tabData = self._tabBar.tabData
self.setTabData = self._tabBar.setTabData
self.tabsClosable = self._tabBar.tabsClosable
self.setTabsClosable = self._tabBar.setTabsClosable
# forwarded Signals
@ -563,7 +564,7 @@ class TTkTabWidget(TTkFrame):
tw = data.tabWidget()
index = tw._tabBar._tabButtons.index(tb)
widget = tw.widget(index)
data = tw.data(index)
data = tw.tabData(index)
if TTkHelper.isParent(self, tw):
return False
if y < 3:

9
TermTk/TTkWidgets/texedit.py

@ -36,7 +36,7 @@ from TermTk.TTkGui.textdocument import TTkTextDocument
from TermTk.TTkAbstract.abstractscrollarea import TTkAbstractScrollArea
from TermTk.TTkAbstract.abstractscrollview import TTkAbstractScrollView
class _TTkTextEditView(TTkAbstractScrollView):
class TTkTextEditView(TTkAbstractScrollView):
__slots__ = (
'_textDocument', '_hsize',
'_textCursor', '_textColor', '_cursorParams',
@ -61,11 +61,11 @@ class _TTkTextEditView(TTkAbstractScrollView):
'''
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._name = kwargs.get('name' , '_TTkTextEditView' )
self._name = kwargs.get('name' , 'TTkTextEditView' )
self.currentColorChanged = pyTTkSignal(TTkColor)
self.undoAvailable = pyTTkSignal(bool)
self.redoAvailable = pyTTkSignal(bool)
self._readOnly = True
self._readOnly = kwargs.get('readOnly', True)
self._multiCursor = True
self._hsize = 0
self._lastWrapUsed = 0
@ -78,6 +78,7 @@ class _TTkTextEditView(TTkAbstractScrollView):
self._clipboard = TTkClipboard()
self.setFocusPolicy(TTkK.ClickFocus + TTkK.TabFocus)
self.setDocument(kwargs.get('document', TTkTextDocument()))
self._updateSize()
@pyTTkSlot(bool)
def _undoAvailable(self, available):
@ -456,7 +457,7 @@ class TTkTextEdit(TTkAbstractScrollArea):
super().__init__(*args, **kwargs)
self._name = kwargs.get('name' , 'TTkTextEdit' )
if 'parent' in kwargs: kwargs.pop('parent')
self._textEditView = _TTkTextEditView(*args, **kwargs)
self._textEditView = kwargs.get('textEditView', TTkTextEditView(*args, **kwargs))
# self.setFocusPolicy(self._textEditView.focusPolicy())
# self._textEditView.setFocusPolicy(TTkK.ParentFocus)
self.setViewport(self._textEditView)

1
docs/MDNotes/TODO.md

@ -8,6 +8,7 @@
- [ ] [UTF-8] Handle "Fullwidth" forms characters
https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms
https://en.wikipedia.org/wiki/Halfwidth_and_Fullwidth_Forms_(Unicode_block)
https://stackoverflow.com/questions/68412744/count-length-of-value-within-a-cell-with-full-width-characters
- [ ] Support Hyperlink: (gnome-terminal)
https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda
- [x] Process child events before parent

Loading…
Cancel
Save