diff --git a/TermTk/TTkWidgets/combobox.py b/TermTk/TTkWidgets/combobox.py index eda311b7..e5362f85 100644 --- a/TermTk/TTkWidgets/combobox.py +++ b/TermTk/TTkWidgets/combobox.py @@ -38,10 +38,12 @@ from TermTk.TTkWidgets.resizableframe import TTkResizableFrame class TTkComboBox(TTkWidget): __slots__ = ('_list', '_id', '_lineEdit', '_editable', '_insertPolicy' #signals - 'editTextChanged') + 'currentIndexChanged', 'currentTextChanged', 'editTextChanged') def __init__(self, *args, **kwargs): # Define Signals - self.editTextChanged = pyTTkSignal(str) + self.currentIndexChanged = pyTTkSignal(int) + self.currentTextChanged = pyTTkSignal(str) + self.editTextChanged = pyTTkSignal(str) TTkWidget.__init__(self, *args, **kwargs) self._name = kwargs.get('name' , 'TTkCheckbox' ) # self.cehcked = pyTTkSignal() @@ -56,7 +58,10 @@ class TTkComboBox(TTkWidget): def _lineEditChanged(self): text = self._lineEdit.text() - if self._insertPolicy == TTkK.NoInsert: + self._id + if text in self._list: + self._id = self._list.index(text) + elif self._insertPolicy == TTkK.NoInsert: pass elif self._insertPolicy == TTkK.InsertAtTop: self._id=0 @@ -74,6 +79,8 @@ class TTkComboBox(TTkWidget): # pass else: pass + self.currentIndexChanged.emit(self._id) + self.currentTextChanged.emit(text) self.editTextChanged.emit(text) def resizeEvent(self, w: int, h: int): @@ -142,6 +149,8 @@ class TTkComboBox(TTkWidget): TTkLog.debug(f"{self._list}") for item in self._list: listw.addItem(item) + if self._id != -1: + listw.setCurrentRow(self._id) TTkHelper.overlay(self, frame, 0, 0) listw.viewport().setFocus() self.update()