diff --git a/TermTk/TTkWidgets/TTkPickers/textpicker.py b/TermTk/TTkWidgets/TTkPickers/textpicker.py index 26c82ad2..befc2335 100644 --- a/TermTk/TTkWidgets/TTkPickers/textpicker.py +++ b/TermTk/TTkWidgets/TTkPickers/textpicker.py @@ -257,13 +257,15 @@ class TTkTextPicker(TTkWidget): Do not use it unless you know what you are doing And I've no idea what I am doing ''' - __slots__ = ('_teButton','_textEdit', 'documentViewChanged') + __slots__ = ('_teButton','_textEdit', 'documentViewChanged', 'textChanged') def __init__(self, *args, **kwargs): self.documentViewChanged = pyTTkSignal(int,int) super().__init__(*args, **kwargs|{'layout':TTkHBoxLayout()}) - self._textEdit = TTkTextEdit(pos=(0,0), size=(self.width()-2,self.height()), lineNumber=True) + self._textEdit = TTkTextEdit(pos=(0,0), size=(self.width()-2,self.height())) + self._textEdit.setText(kwargs.get('text','')) self._textEdit.setReadOnly(False) self._textEdit.setLineWrapMode(TTkK.WidgetWidth) + self.textChanged = self._textEdit.textChanged self._teButton = TTkButton(border=True, text='^', borderColor=TTkColor.fg("#AAAAFF")+TTkColor.bg("#002244") , pos=(self.width()-2,0), size=(2,self.height()), minSize=(3,1),maxWidth=3) @@ -274,13 +276,16 @@ class TTkTextPicker(TTkWidget): def _showTextDialogPicker(): w,h = self.size() tdp = TTkTextDialogPicker(size=(50,8+h), document=self._textEdit.document()) - TTkHelper.overlay(self, tdp, -1, -7) + TTkHelper.overlay(self, tdp, -1, -7, modal=True) tdp.focusTextEdit() self._teButton.clicked.connect(_showTextDialogPicker) self._textEdit.viewport().viewChanged.connect(self._textPickerViewChanged) + def getTTkString(self): + return self._textEdit.toRawText() + @pyTTkSlot() def _textPickerViewChanged(self): wa,ha = self._textEdit.viewport().viewFullAreaSize() diff --git a/ttkDesigner/app/propertyeditor.py b/ttkDesigner/app/propertyeditor.py index 3d3b2a02..56814ec2 100644 --- a/ttkDesigner/app/propertyeditor.py +++ b/ttkDesigner/app/propertyeditor.py @@ -111,6 +111,12 @@ class PropertyEditor(ttk.TTkGridLayout): _f(_w,_val) self._superWidget.updateAll() return _ret + def _boundTextEdit(_f,_w,_te): + def _ret(): + _v = _te.getTTkString() + _f(_w,_v) + self._superWidget.updateAll() + return _ret # Multi Flag Fields # ▼ Input Type │ - (0x0001) @@ -194,8 +200,8 @@ class PropertyEditor(ttk.TTkGridLayout): # String Fields def _processTTkString(name, prop): getval = prop['get']['cb'](domw) - value = ttk.TTkLineEdit(text=getval, height=1) - value.textEdited.connect(_bound(prop['set']['cb'],domw,lambda v:v)) + value = ttk.TTkTextPicker(text=getval, height=len(getval.split('\n'))) + value.textChanged.connect(_boundTextEdit(prop['set']['cb'],domw,value)) return ttk.TTkTreeWidgetItem([name,value]) # Color Fields def _processTTkColor(name, prop):