diff --git a/TermTk/TTkAbstract/abstractscrollarea.py b/TermTk/TTkAbstract/abstractscrollarea.py index 430c9182..0be62e69 100644 --- a/TermTk/TTkAbstract/abstractscrollarea.py +++ b/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) diff --git a/TermTk/TTkCore/signal.py b/TermTk/TTkCore/signal.py index 9fe77e99..5edddf1c 100644 --- a/TermTk/TTkCore/signal.py +++ b/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): diff --git a/TermTk/TTkCore/timer.py b/TermTk/TTkCore/timer.py index a15f36ec..d73ce55e 100644 --- a/TermTk/TTkCore/timer.py +++ b/TermTk/TTkCore/timer.py @@ -107,6 +107,7 @@ else: def quit(self): self._quit.set() + self._delay=1 self._timerEvent.set() def run(self): diff --git a/TermTk/TTkWidgets/tabwidget.py b/TermTk/TTkWidgets/tabwidget.py index 18d5b0ea..80cef680 100644 --- a/TermTk/TTkWidgets/tabwidget.py +++ b/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: diff --git a/TermTk/TTkWidgets/texedit.py b/TermTk/TTkWidgets/texedit.py index 169d5b0d..20fa5c21 100644 --- a/TermTk/TTkWidgets/texedit.py +++ b/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) diff --git a/docs/MDNotes/TODO.md b/docs/MDNotes/TODO.md index 001ab3c0..9af89d71 100644 --- a/docs/MDNotes/TODO.md +++ b/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